Python三引号字符串如何工作?

时间:2009-10-05 14:49:05

标签: python string

如何更改此功能以返回"123456"

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

更新:每个人,问题是关于如何在有多行评论时理解如何没有或等等,而不是如何使用re模块。

9 个答案:

答案 0 :(得分:52)

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

使用隐式延续,它更优雅:

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

答案 1 :(得分:18)

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

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

答案 2 :(得分:14)

后续字符串是连接的,因此您可以使用:

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

这样您就可以随意保持缩进。

答案 3 :(得分:10)

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

来自标准库。首先“\”是必要的,因为此函数通过删除公共前导空格来工作。

答案 4 :(得分:7)

也许我错过了一些明显的东西,但是这个:

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

或者只是这个:

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

甚至更简单:

def f():
    return "123456"

如果这不能回答您的问题,请澄清问题所在。

答案 5 :(得分:0)

您可能需要查看此str.splitlines([keepends])

  

返回字符串中的行列表,在行边界处断开。   此方法使用通用换行方法来分割线。   除非keepends是,否则换行符不包含在结果列表中   给予和真实。

     

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

所以,对于手头的问题......我们可以做这样的事情......

>>> s = """123
... 456"""
>>> s
'123\n456'
>>> ''.join(s.splitlines())
'123456'

答案 6 :(得分:-1)

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

将返回一个字符串,如果您想要一个整数,请将此字符串转换为int

答案 7 :(得分:-1)

尝试

import re

然后

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

答案 8 :(得分:-3)

我的猜测是:

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

最小变化并完成要求。