在python中将文本文件中的多个空格更改为$sign
我尝试将文本文件中的多个空格更改为$符号 我尝试了这个方法,它可以工作,使所有的空格都变成1个空格,但如果找到的空格超过2,我需要读取所有的文本文件,并将其转换为$sign在python中将文本文件中的多个空格更改为$sign,python,Python,我尝试将文本文件中的多个空格更改为$符号 我尝试了这个方法,它可以工作,使所有的空格都变成1个空格,但如果找到的空格超过2,我需要读取所有的文本文件,并将其转换为$sign fin = open("data.txt", "rt") fout = open("out.txt", "wt") for line in fin: fout.write(' '.join(line.split())) fin
fin = open("data.txt", "rt")
fout = open("out.txt", "wt")
for line in fin:
fout.write(' '.join(line.split()))
fin.close()
fout.close()
您可以使用像
{2,}
(注意前导空格)这样的正则表达式来查找2个或更多的空格和re.sub
带有$
的空格
>>> import re
>>> s = "string with spaces and double and more spaces"
>>> re.sub(" {2,}", "$", s)
'string with spaces$and$double$and$more$spaces'
如果要将它们替换为相同数量的$
,可以使用带有回调的re.sub
:
>>> re.sub(" {2,}", lambda m: "$" * len(m.group()), s)
'string with spaces$$and$$double$$and$$$more$$$$spaces'
应用于您的代码,以下内容应该可以正常工作(使用第一个版本):
您可以使用像
{2,}
(注意前导空格)这样的正则表达式来查找2个或更多的空格和re.sub
带有$
的空格
>>> import re
>>> s = "string with spaces and double and more spaces"
>>> re.sub(" {2,}", "$", s)
'string with spaces$and$double$and$more$spaces'
如果要将它们替换为相同数量的$
,可以使用带有回调的re.sub
:
>>> re.sub(" {2,}", lambda m: "$" * len(m.group()), s)
'string with spaces$$and$$double$$and$$$more$$$$spaces'
应用于您的代码,以下内容应该可以正常工作(使用第一个版本):
它工作得很好,但我如何在文件上实现它来做同样的事情。@DoomraiqRaiq只是把
re.sub(…)
放进你的fout.write(…)
而不是''。join(…)
我按照你说的做了,但是当我改变fin而不是s来读取文件时,它会给我错误返回(编译(模式,标志).sub(repl,string,count)TypeError:应为字符串或类似字节的对象。@tobias_k@DoomraiqRaiq不要将文件作为一个整体传递,而要传递单独的行;请参阅我的编辑。它可以使用一些空格,有些保留原样。在第1行中,所有内容都很完美,但其他行中只有最后一个空格改为$,但第一个空格并没有。@tobias_kit工作得很好,但如何操作我实现它是为了在文件上做同样的事情。@DoomraiqRaiq只是把re.sub(…)
放进你的fout.write(…)
而不是'.join(…)
我按照你说的做了,但是当我改变fin而不是s来读取文件时,它会给我错误返回_compile(模式、标志).sub(repl、字符串、计数)TypeError:应为字符串或类似字节的对象。@tobias_k@DoomraiqRaiq不要将文件作为一个整体传递,而要传递单独的行;请参阅我的编辑。它使用一些空格,有些保留原样。在第1行中,所有内容都很完美,但其他行中只有最后一个空格改为$,但第一个空格并没有。@tobias_k