我有一个特定的字符串fruits
,如下所示:
Apples
Bananas
Pineapples
每行末尾以及字符串的开头和结尾处都有一个回车符\r
。使用正则表达式,我将如何将 : 1
append 到第一行 Apples
的末尾?我尝试了以下方法,但没有成功:
re.sub("Apples(\r)", "\1:1", fruits)
我的想法是 \1
应该替换括号 (\r)
中的内容,但是模式中的所有内容都将被替换。
最佳答案
您正在做的是匹配 "Apples\r"
,捕获过程中的 "\r"
,然后将整个匹配替换为 "\r:1"
。
对于这个简单的示例,无论如何,都不需要捕获与 \r
的匹配,因为唯一匹配它的是 \r
。您可以将其硬编码到替换字符串中。
我假设您希望结果字符串为"\rApples: 1\rBananas\rPineapples\r
。
您可以使用 lookbehind这样苹果
就不会被消耗(尽管我听说每天吃一个可以让医生远离我):
re.sub("(?<=Apples)\r", ": 1\r", fruits)
但你也可以这样做:
re.sub("Apples\r", "Apples: 1\r", fruits)
如果你想在每个水果后面添加 : 1
,lookbehind 会更有用:
re.sub("(?<=[^\r])\r", ": 1\r", fruits)
上面的内容是查找非 \r
字符后面的每个 \r
,并将其替换为 : 1\r
。结果将是:
# \rApples: 1\rBananas: 1\rPineapples: 1\r\r
关于python - 追加到一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34758033/