gpt4 book ai didi

python - 从文件中删除未混合的数字

转载 作者:太空狗 更新时间:2023-10-30 02:54:04 26 4
gpt4 key购买 nike

假设我有一个名为 input.txt 的文件,看起来像这样

I listened to 4 u2 albums today
meet me at 5
squad 4ever

我想过滤掉独立的数字,所以“4”和“5”应该去掉,但“u2”和“4ever”应该保持不变。即输出应该是

I listened to u2 albums today
meet me at
squad 4ever

我一直在尝试使用这段代码

for line in fileinput.input("input.txt", inplace=True):
new_s = ""
for word in line.split(' '):
if not all(char.isdigit() for char in word):
new_s += word
new_s += ' '
print(new_s, end='')

这与我在此处找到的代码非常相似:Removing numbers mixed with letters from string

但我得到的不是想要的输出

I listened to u2 albums today
meet me at 5
squad 4ever

如您所见,这里有两个问题,首先只有第一行丢失了我希望它丢失的数字,“5”仍然出现在第二行中。第二个问题是新行开头的额外空白。

我一直在研究代码并浏览了 stackoverflow,但找不到问题出在哪里。有什么见解吗?

最佳答案

str.split(' ') 不会从每行中删除结尾的换行符。他们最终附加到该行的最后一个字。因此,对于您的第一个问题,'5' 不会被删除,因为它实际上是 '5\n',而 \n 是不是数字。

第二个问题是相关的。当您打印每行的最后一个单词时,它包含该换行符,并且您在末尾添加了一个空格。该空格显示为下一行的第一个字符。

最简单的解决方案就是将 line.split(' ') 更改为 line.split()。如果没有任何参数,split() 将删除所有空格,包括换行符。您还需要从 print 中删除 end='',以便重新添加换行符。

关于python - 从文件中删除未混合的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47310379/

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