gpt4 book ai didi

python - 在单独的行上将项目写入文件,末尾没有空行

转载 作者:太空宇宙 更新时间:2023-11-03 13:49:03 24 4
gpt4 key购买 nike

我有一个包含一堆文本的文件,我想撕开它,匹配一堆东西,然后将这些项目写入新文件中的单独行。

这是我放在一起的代码的基础:

f = open('this.txt', 'r')
g = open('that.txt', 'w')
text = f.read()
matches = re.findall('', text) # do some re matching here
for i in matches:
a = i[0] + '\n'
g.write(a)
f.close()
g.close()

我的问题是我希望每个匹配的项目都在一个新行(因此是“\n”),但我不希望文件末尾有一个空行。

我想我不需要在文件中的最后一项后面加上换行符。

解决这个问题的 Pythonic 方法是什么?另外,我在我的代码中设置它的方式是最好的方式还是最 Pythonic?

最佳答案

如果你想写出一系列行,它们之间有换行符,但末尾没有换行符,我会使用 str.join。也就是说,将您的 for 循环替换为:

output = "\n".join(i[0] for i in matches)
g.write(output)

为了避免必须显式关闭文件,尤其是当您的代码可能被异常中断时,您可以使用 with 语句使事情变得更简单。以下代码替换了您问题中的全部代码:

with open('this.txt') as f, open('that.txt', 'w') as g:
text = f.read()
matches = re.findall('', text) # do some re matching here
g.write("\n".join(i[0] for i in matches))

或者,因为您不需要同时打开两个文件:

with open('this.txt') as f:
text = f.read()
matches = re.findall('', text) # do some re matching here
with open('that.txt', 'w') as g:
g.write("\n".join(i[0] for i in matches))

关于python - 在单独的行上将项目写入文件,末尾没有空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13329818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com