【发布时间】:2019-04-22 10:11:37
【问题描述】:
我已使用以下代码替换字符串中的转义字符。我首先完成了\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']
【问题讨论】:
-
虽然我不明白你的正则表达式试图实现的一切,但我看到了一个主要缺陷:你试图逐字匹配
` whileString` 不包含任何内容。` inString` 仅用于转义,它们不存在! -
哎呀。评论格式问题。 ...
\` whileString... The\` 在String... 也不起作用?如何在代码引用中添加反斜杠? ...反斜杠 while String...String 中的反斜杠... -
@mkiever 不知道,我尝试了两种方法,似乎是 SO 可能想要解决的问题。