我正在尝试用python编写程序。 我想用新行代替txt文档中的空格。 我自己尝试过编写它,但我的输出文件充满了奇怪的字符。 你能帮我吗? :)
答案 0 :(得分:3)
你走了:
lResults = list()
with open("text.txt", 'r') as oFile:
for line in oFile:
sNewLine = line.replace(" ", "\n")
lResults.append(sNewLine)
with open("results.txt", "w") as oFile:
for line in lResults:
oFile.write(line)
这是评论中建议后的“优化”版本:
with open("text.txt", 'r') as oFile:
lResults = [line.replace(" ", "\n") for line in oFile]
with open("results.txt", "w") as oFile:
oFile.writelines(lResults)
编辑:对评论的回应:
嘿塞巴斯蒂安 - 我只是尝试了你的代码,它一直让我觉得奇怪 输出文件中的字符!我做错了吗? - 弗雷迪1分钟前
“怪异”角色是什么意思?你有非ASCII文件吗? 对不起,但对我来说它完全正常,我只是测试了它。
答案 1 :(得分:2)
试试这个:
import re
s = 'the text to be processed'
re.sub(r'\s+', '\n', s)
=> 'the\ntext\nto\nbe\nprocessed'
现在,上面的“要处理的文本”将来自您之前在字符串中读取的输入文本文件 - 有关如何执行此操作的详细信息,请参阅此answer。
答案 2 :(得分:1)
您可以使用正则表达式实现此目的:
import re
with open('thefile.txt') as f, open('out.txt', 'w') as out:
for line in f:
new_line = re.sub('\s', '\n', line)
# print new_line
out.write(new_line)
您可能需要将new_line
写回文件而不是打印文件:)(==>片段编辑)。
请参阅python regex
文档:
sub(pattern, repl, string, count=0, flags=0)
pattern
:搜索模式repl
:替换模式string
:要处理的字符串,在本例中为line
注意:如果您只想替换行尾的空格,请使用\s$
搜索模式,其中$
代表结尾string(以便读取“字符串末尾的空格”)。如果您确实需要替换每个空格,那么replace
的{{1}}方法就足够了。
答案 3 :(得分:1)
def (in_file, out_file):
with open(in_file, 'r') as i, open(out_file, 'w') as o:
w.write(i.read().replace(' ', os.linesep))
请注意,这既不会循环也不会写'\n'
,而是会os.linesep
在Linux上\n
和Windows上的\r\n
等等。
同时请注意,答案的最大部分来自alwaysprep,如果他从他的解决方案中取出循环,他应该得到它的功劳。 (他实际上是否删除了他的答案?再也找不到了。)