我正在读取python中的文件并从中获取行。 然而,在打印出我得到的值之后,我意识到在每一行之后最后都有一个尾随\。 我看了Python strip with \n并尝试了其中的所有内容,但没有删除任何结尾。 例如
0048 \
0051 \
0052 \
0054 \
0056 \
0057 \
0058 \
0059 \
我怎样摆脱这些斜线?
这是我到目前为止的代码
for line in f:
line = line.replace('\\n', "")
line = line.replace('\\n', "")
print(line)
我甚至尝试过使用正则表达式
strings = re.findall(r"\S+", f.read())
但到目前为止还没有任何工作。
答案 0 :(得分:1)
你可能对行中的内容感到困惑,结果你也让我感到困惑。 '\n'
是一个换行符,如repr()
所示(当您想知道某个值的确切位置时,这是您的朋友)。一行通常以此结束(例外是文件的结尾,可能不是)。那不包含反斜杠;反斜杠是string literal转义序列的一部分。你的'\\n'
的替换参数包含两个字符,一个反斜杠后跟字母n。这与'\n'
不匹配;删除换行符最简单的方法是使用str.rstrip('\n')
。读取行本身将保证最多只有一个换行符,它位于字符串的末尾。我们经常使用不带参数的strip(),因为我们也不想要空格。
如果你的字符串确实包含反斜杠,你也可以处理它,无论是使用replace,strip,re还是其他一些字符串处理。请记住,它不仅可以用于字符串文字级别,还可以用于regular expression级别的转义序列。例如,re.sub(r'\\$', '', str)
将从字符串末尾删除反斜杠;反斜杠本身加倍,并不意味着正则表达式中的特殊序列,而字符串文字是原始的,不需要再加倍反斜杠。