我使用以下代码替换字符串中的转义字符。我首先用\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)
我的目标是:我只需要值(没有转义序列)作为分割字符串。你知道吗
我的方法是:
\n
分割了字符串,这给了我一个单独字符串的数组列表。你知道吗所以基本上,我完成了1和2,但目前我被困在3。以下是我的输出:
1
2
3
4
['1\r\r\t\r', '2\r\r', '3\r\r\r\r', '\r', '\r4', '\r']
你就快到了,我就用
string.strip()
替换字符串开头和结尾的多个\r
和\n
输出看起来像
对于
"jkahdjkah \r\r\t\r\nA: B\r\r\nA : B\r\r\r\r\n\r\n\r4\n\r"
,输出将是['jkahdjkah', 'A: B', 'A : B', '4']
您可能会发现使用
re.findall
这里的简单模式\S+
更容易:这种方法将隔离和匹配由一个或多个非空白字符组成的孤岛。你知道吗
编辑:
根据您的新输入数据,我们可以尝试匹配模式
[^\r\n\t]+
:re.sub
并不是这里工作的合适工具。表上的内容是split
或re.findall
,因为您希望重复匹配/隔离文本的某个部分。re.sub
对于获取字符串并将其转换为其他内容非常有用。它可以用于提取文本,但对于多个匹配项来说效果不太好。你知道吗我又找到了一种方法,这似乎很有效,它可能不像其他答案那样优化,但它只是另一种方法:
我在这里加了这个词,所以和我一样经历麻烦的人可能也会忽略这个方法。你知道吗
下面是我使用上述代码后得到的输出:
相关问题 更多 >
编程相关推荐