gpt4 book ai didi

python - 替换 Python 3.x 中字符串中的转义序列字符

转载 作者:行者123 更新时间:2023-11-28 21:32:46 27 4
gpt4 key购买 nike

我使用以下代码来替换字符串中的转义字符。我首先按 \n 和使用的 re.sub() 进行了分割,但我仍然不知道我错过了什么,代码没有按照预期工作。我是Python新手,所以请不要判断是否存在优化问题。这是我的代码:

#import sys
import re

String = "1\r\r\t\r\n2\r\r\n3\r\r\r\r\n\r\n\r4\n\r"
splitString = String.split('\n')
replacedStrings = []
i=0

for oneString in splitString:
#oneString = oneString.replace(r'^(.?)*(\\[^n])+(.?)*$', "")
oneString = re.sub(r'^(.?)*(\\[^n])+(.?)*$', "", oneString)
print(oneString)
replacedStrings.insert(i, oneString)

i += 1

print(replacedStrings)

我的目标是:我只需要值(没有转义序列)作为分割字符串。

我的方法是:

  1. 我已按 \n 分割字符串,这为我提供了单独字符串的数组列表。
  2. 然后,我使用正则表达式检查每个字符串,如果正则表达式匹配,则匹配的子字符串将替换为“”。
  3. 然后我将这些字符串推送到一个集合中,认为它将把替换的字符串存储在新的数组列表中。

所以基本上,我已经完成了 1 和 2,但目前我陷入了 3。以下是我的输出:

1
2
3

4

['1\r\r\t\r', '2\r\r', '3\r\r\r\r', '\r', '\r4', '\r']

最佳答案

您可能会发现在这里使用 re.findall 和简单模式 \S+ 会更容易:

input = "1\r\r\t\r\n2\r\r\n3\r\r\r\r\n\r\n\r4\n\r"
output = re.findall(r'\S+', input)
print(output)

['1', '2', '3', '4']

此方法将隔离并匹配一个或多个非空白字符的任何岛。

编辑:

根据您的新输入数据,我们可以尝试匹配模式[^\r\n\t]+:

input = "jkahdjkah \r\r\t\r\nA: B\r\r\nA : B\r\r\r\r\n\r\n\r4\n\r"
output = re.findall(r'[^\r\n\t]+', input)
print(output)

['jkahdjkah ', 'A: B', 'A : B', '4']

re.sub 并不是真正适合这里工作的工具。表格上的内容是 splitre.findall,因为您想要重复匹配/隔离文本的特定部分。 re.sub 对于获取字符串并将其转换为其他内容非常有用。它可以用于提取文本,但对于多个匹配则效果不佳。

关于python - 替换 Python 3.x 中字符串中的转义序列字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55792715/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com