引号的拆分行拆分子引号中的“\n”

2024-09-27 07:24:52 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个引号,其中包含一个带“\n”的双引号, 如果在父引号上执行拆分行,则子引号也将被拆分

double_quote_in_simple_quote = 'v\n"x\ny"\nz'
print(double_quote_in_simple_quote.splitlines())

结果输出

['v', '"x', 'y"', 'z']

我本以为会发生以下情况:

['v', '"x\ny"', 'z']

因为“\n”在子引号的范围内

我希望得到一个解释,为什么它的行为是这样的,如果你有任何替代的'分割线'在主要报价水平只

多谢各位


Tags: in水平情况simple引号quote报价double
3条回答

我提出了一个讨厌的代码,当您试图找到另一种方法来拆分引号时,它可以让您四处走动,而不具有使Python的行为保持不变的特性

double_quote_in_simple_quote = '"x\ny"'

double_quote_in_simple_quote = double_quote_in_simple_quote.replace("\n", "$n")

splitted_quote = double_quote_in_simple_quote.splitlines()
print(splitted_quote)

splitted_quote_decoded = [quote.replace('$n', '\n') for quote in splitted_quote]


print(splitted_quote_decoded)

其思想是用没有意义但尚未使用的内容替换\n,然后将其反转。我用了你的例子,但我相信你会调整它以满足你的需要。我的产出是:

['"x$ny"']
['"x\ny"']

这是由于Python中转义序列的性质造成的

\n在python中表示新行字符。每当python捕获该序列时,它都将其视为换行符,并考虑跳过一行splitlines()方法将字符串拆分为一个列表,并在换行时进行拆分。这就是为什么会得到一个没有新行字符的列表

但是,您可以通过指定默认不考虑逃逸线的参数来逃脱它:

print(double_quote_in_simple_quote.splitlines(keepends=True))
>>> ['"x\\ny"']

如果在Python中双引号引用字符串,这并不意味着存在嵌套字符串本身。不管最外面的引号是什么,Python都将根据它来开始和结束string对象。任何内部类似引号的字符都被视为ascii字符

>>> print('dog')
dog
>>> print('"dog"')
"dog"

请注意,在第二行中,引号也是如何打印的,因为那些实际的引号字符是字符串的一部分。没有筑巢发生

相关问题 更多 >

    热门问题