用Pythonic的方式编写单行长字符串

5

在程序中,写一条长字符串的Pythonic方式是什么:

s = 'This is a long long string.'

此外,该字符串可能需要使用变量进行格式化:

s = 'This is a {} long long string.'.format('formatted')

现有解决方案1

s = 'This is a long '\
        'long '\
        'string.'

多余的反斜杠字符会使重新格式化变得非常困难。使用反斜杠连接两行会出现错误。

现有解决方案2

s = 'This is a long \
long \
string.'

除了上述类似的问题,后续的行必须从开头对齐,这使得当第一行缩进时阅读起来很困难。

4
不是重复的问题。这似乎是关于单行长字符串,而那个stackoverflow问题则是针对多行字符串的。 - rgilligan
@chris 我认为这不是与其他被引用的问题重复。这是关于单行字符串,而不是多行字符串。 - rgilligan
同意@rgilligan的观点 - 所涉及的问题是关于多行字符串的,请重新打开此问题。 - Jerrybibo
1
我实际上投票将其关闭为基本上是基于观点的,而不是那个问题的重复。我同意它是不同的。然而,这个问题之前已经被问过了,例如:https://dev59.com/SnI95IYBdhLWcg3w_zWs。它可能不应该重新打开。 - Chris
2个回答

9

对于不希望出现\n字符的长字符串,请使用“字符串文字连接”:

s = (
    'this '
    'is '
    'a '
    'long '
    'string')

输出:

这是一个长字符串

它也可以进行格式化:

s = (
    'this '
    'is '
    'a '
    '{} long '
    'string').format('formatted')

输出:

这是一个格式化的长字符串


2
参考链接 - Chris
2
@Cyker:那是不正确的,你只需要写一个.format() - Dietrich Epp
@rgilligan 好的,它可以工作了。再看一眼,我现在明白为什么了。这看起来很酷。非常感谢你。 - Cyker
@rgilligan 但是我想指出,你需要在每个字符串元素中加入尾随空格,因为Python不会自动插值。 - Cyker
@Cyker 谢谢,我已经更新了答案以反映这些内容。 - rgilligan
显示剩余2条评论

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接