我有一个特定的字符串fruits这样:

Apples
Bananas
Pineapples


每行的末尾以及字符串的开头和结尾都有回车符\r。使用RegEx,如何将: 1附加到第一行Apples的末尾?我尝试了以下无济于事:

re.sub("Apples(\r)", "\1:1", fruits)


我的想法是\1应该替换括号(\r)中的内容,但是模式中的所有内容都将被替换。

最佳答案

您正在做的是匹配"Apples\r",在过程中捕获"\r",然后将整个匹配项替换为"\r:1"

对于这个简单的示例,无论如何都不需要捕获\r的匹配项,因为唯一匹配的是\r。您可以将其硬编码到替换字符串中。

我假设您希望结果字符串为"\rApples: 1\rBananas\rPineapples\r

您可以使用lookbehind,这样就不会消耗Apples(尽管我听说每天消耗一剂会使医生远离):

re.sub("(?<=Apples)\r", ": 1\r", fruits)


但是您也可以这样做:

re.sub("Apples\r", "Apples: 1\r", fruits)


如果您想在每个水果后添加: 1,则后向查找会更有用:

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/

10-12 18:53