如何摆脱我的文本文件中的\ r \ n

时间:2018-01-19 20:27:18

标签: python regex replace newline

我正在开发一个基于歌词生成文本的项目,而且我在文本文件中摆脱了\ r \ n的问题。以下是一些输出的示例:

  

B" chuwt flexer,Larr \ r \ n \ nPull up welds pinky ring \ r \ n \ r \ nLil Pumpy,yuh,我讨厌我对我的态度很奇怪xxxx一个cracklee \ r \ n我是冥想像我一样的cockouks你的医生给你的一个小伙子什么?\ r \ nPoll yual'一个卖得好的人我是谁的高架,哦(哦,我的方式?(yuh)\ r \ nHigh"

只要出现新行,就会出现\ r \ n&n;我已经尝试了一些逐行使用.replace()和.rstrip()的实现,以摆脱它们,但它们似乎不起作用。如果重要,则文本文件以UTF-8编码。

我使用的是Python和PowerShell,因此可以接受任何一种解决方案。

编辑:这是我尝试(并且失败)使用的一种方法。

f = open("input.txt",'r')
filedata = f.read()
f.close()

newdata = filedata.replace(r"\r\n","\n")

f = open("output.txt",'w')
f.write(newdata)
f.close()

2 个答案:

答案 0 :(得分:1)

使用通用换行模式('rU')打开文件进行读取,已知的行结尾将替换为'\ n'。尽管如此,mode参数现已弃用,但可以使用newline=None。根据{{​​3}}:

  

当从流中读取输入时,如果换行是None,则为通用   换行模式已启用。输入中的行可以以'\ n','\ r'或者结尾   '\ r \ n',这些在返回之前会被翻译成'\ n'   来电者。

所以你可以尝试一下,

f = open("input.txt",newline=None) # Deprecated f = open("input.txt",'rU')
filedata = f.read()
f.close()

f = open("output.txt",'w')
f.write(filedata)
f.close()

答案 1 :(得分:0)

您的输入属于bytes类型。在Python 3.x上,这应该可行:

the_string = b" the chuwt flexer, Larr\r\nPull up welds pinky ring\r\n\r\nLil Pumpy, yuh, I hagete I me natch on houssed that xxxx a cracklee\r\nI was muse shenting like I'm cockouks on your med to your my a claboy what?\r\nPoll yual' a selll phowe i's wens higner rack, ooh (ooh rije I way? (yuh)\r\nHo righ"

print(type(the_string))
print(str(the_string, 'utf-8').replace('\r\n', ' '))

<class 'bytes'>
 the chuwt flexer, Larr Pull up welds pinky ring  Lil Pumpy, yuh, I hagete I me natch on houssed that fuck a cracklee I was muse shenting like I'm cockouks on your med to your my a claboy what? Poll yual' a selll phowe i's wens higner rack, ooh (ooh rije I way? (yuh) Ho righ
>>> 

这也应该有效:

the_string.decode().replace('\r\n', ' ')