2009-10-05 54 views
28

该功能如何更改为返回"123456"Python的三引号字符串是如何工作的?

def f(): 
    s = """123 
    456""" 
    return s 

UPDATE:每个人的问题是关于理解具有多行注释的时候,而不是如何使用re模块怎么没有\ T或什么的。

+2

这是功课? 提示:你的字符串是“123 <一些空白> 456” – 2009-10-05 14:53:07

+7

这不是家庭作业。我试图理解'''''是如何工作的 – 2009-10-05 15:10:12

+0

但是我怎么没有它? – 2009-10-05 15:12:40

回答

50

当您不需要额外的空格,制表符和换行符时,不要使用三引号字符串。

使用隐延续,它更优雅:

def f(): 
    s = ('123' 
     '456') 
    return s 
+1

这个用法对我来说很自然,但当我不得不插入变量值时一个例如:%s,但唉,甚至以下作品: 's =('String%s'' ''String%s')%('foo','bar')' – Spade 2014-12-15 08:41:00

6

也许我缺少这个东西很明显,但什么:

def f(): 
    s = """123456""" 
    return s 

或简单:

def f(): 
    s = "123456" 
    return s 

或更简单:

def f(): 
    return "123456" 

如果还是不行回答你的问题,然后请澄清问题是关于什么。

+0

关于理解如何在有多行注释时没有\ t或其他任何东西。 – 2009-10-05 15:11:27

+9

三重引号字符串不是多行注释,它是一个原始字符串,并且完全包含您键入的内容。 – JimB 2009-10-05 15:20:58

+0

我站好了。 – 2009-10-05 22:06:28

-1
re.sub('\D+', '', s) 

将返回一个字符串,如果你想要一个整数,转换在此字符串int

-1

尝试

import re 

然后

return re.sub("\s+", "", s) 
-4

我的猜测是:

def f(): 
    s = """123 
    456""" 
    return u'123456' 

最小变化和做什么的要求。

+7

:-)谁downvoted这个没有幽默感 – foosion 2009-10-05 17:20:49

+0

可能downvoted,因为该函数应该返回一个字符串。 – recursive 2009-10-05 17:28:40

+0

你是对的,它可能必须返回一个字符串,我返回一个整数,无论​​如何,我也没有得到downvoted的东西,我是新的python – Juparave 2009-10-05 17:47:49

16
def f(): 
    s = """123\ 
456""" 
    return s 

不要在第一行之后缩进任何blockquote行;用反斜杠结束除最后一行以外的每一行。

+1

+1:即使我不喜欢bashslashes:可以使用replace('\ n','') – van 2009-10-05 17:52:55

+0

...而不是{{{return s.replace('\ n','') n','')}}},而是在赋值本身中:{{{456“”“。replace('\ n','')}}} – van 2009-10-05 17:56:30

14

随后的字符串连,所以你可以使用:

def f(): 
    s = ("123" 
     "456") 
    return s 

这将让你保持缩进,只要你喜欢。

+0

+1 - 打我吧 – PaulMcG 2009-10-05 19:18:35

+0

OP - “123”和“456”之间没有逗号,()的使用是为了避免必须使用'\'作为连续线 – PaulMcG 2009-10-05 19:19:34

9
textwrap.dedent("""\ 
       123 
       456""") 

从标准库。首先“\”是必要的,因为此功能通过删除共同的前导空格来工作。

+0

不回答问题,但确实回答谷歌查询!实际上问:http://stackoverflow.com/questions/1412374/python-triple-quote-multi-line-indentation – 2017-01-26 09:45:21

0

你可能要检查这个str.splitlines([keepends])

返回字符串中的行的列表,在破线边界。 此方法使用通用换行符方法来分割线。 换行符不包含在结果列表中,除非给出并确实为 。

Python将“\ r”,“\ n”和“\ r \ n”识别为8位字符串的行边界。

因此,对于手头的问题...我们可以做服用点这样的..

>>> s = """123 
... 456""" 
>>> s 
'123\n456' 
>>> ''.join(s.splitlines()) 
'123456' 
相关问题