繁体   English   中英

如何在python中加入字符串以获得多行文本,以便\\n代表一个新行而不是一个字符?

[英]how to join strings in python in order to get a multiline text so \n represents a new line and not a character?

给定一个字符串列表: ['string_a', 'string_b', 'string_c']

如果我用\\n加入这些字符串:

'\\n'.join(['string_a', 'string_b', 'string_c'])

结果是(case 0): 'string_a\\nstring_b\\nstring_c'

如果我打印结果(案例 1):

string_a
string_b
string_c

鉴于我想使用正则表达式找到包含 string_b 及其下方所有内容的行,但这就是我找到的: https ://regex101.com/r/yF4u2I/1

正则表达式r'string_b\\n.+'可以在 case 1 中找到文本,但在 case 0 中找不到它。

但是,如果我将正则表达式更改为r'string_b\\\\n.+'它只会在案例 0 中找到文本。发生这种情况是因为\\n被视为字符而不是换行符。

如何加入字符串列表以获得多行字符串? 或者使用正则表达式找到它的另一种方法是什么?

您可以使用“|” 对于 OR 所以:

r'string_b\n.+|string_b.+'

希望这可以帮助!

不要对正则表达式字符串使用r前缀。 r 告诉正则表达式将模式视为原始字符串。

使用'string_b\\n.+'

除非存在 'r' 或 'R' 前缀,字符串中的转义序列将根据与标准 C 使用的规则类似的规则进行解释。 识别的转义序列是:

转义序列 含义 注释 \\newline 忽略 \\ 反斜杠 () \\' 单引号 (') \\" 双引号 (") \\a
ASCII Bell (BEL) \\b ASCII Backspace (BS) \\f ASCII Formfeed (FF) \\n ASCII Linefeed (LF) \\N{name} Unicode 数据库中命名的字符(仅限 Unicode)\\r ASCII 回车符 (CR) \\t ASCII 水平制表符 (TAB) \\uxxxx 具有 16 位十六进制值的字符 xxxx(仅限 Unicode) \\Uxxxxxxxx 具有 32 位十六进制值的字符 xxxxxxxx(仅限 Unicode) \\v ASCII 垂直制表符 (VT) \\ooo 具有八进制值的字符ooo \\xhh 十六进制值的字符 hh

l=['a','s','c']

''.join(list(i+'\n' for i in l )))

这运行良好

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM