如何在python3中读取文件时摆脱尾随\

时间:2017-07-13 09:54:40

标签: python regex string python-3.x

我正在读取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())

但到目前为止还没有任何工作。

1 个答案:

答案 0 :(得分:1)

你可能对行中的内容感到困惑,结果你也让我感到困惑。 '\n'是一个换行符,如repr()所示(当您想知道某个值的确切位置时,这是您的朋友)。一行通常以此结束(例外是文件的结尾,可能不是)。那不包含反斜杠;反斜杠是string literal转义序列的一部分。你的'\\n'的替换参数包含两个字符,一个反斜杠后跟字母n。这与'\n'不匹配;删除换行符最简单的方法是使用str.rstrip('\n')。读取行本身将保证最多只有一个换行符,它位于字符串的末尾。我们经常使用不带参数的strip(),因为我们也不想要空格。

如果你的字符串确实包含反斜杠,你也可以处理它,无论是使用replace,strip,re还是其他一些字符串处理。请记住,它不仅可以用于字符串文字级别,还可以用于regular expression级别的转义序列。例如,re.sub(r'\\$', '', str)将从字符串末尾删除反斜杠;反斜杠本身加倍,并不意味着正则表达式中的特殊序列,而字符串文字是原始的,不需要再加倍反斜杠。