如何解决从大型文本文件中删除特定项目0值和乘以* 0的值,然后使用Python将其写入新的文本文件
我是Python的基本用户,我已经在多个平台上搜索了如何从大型文本文件中删除特定值,但没有找到与我想做的事情类似的事情。我有一个大文件(out.txt),我想删除大数据文件中的所有0值和所有值乘以0(75 * 0)。删除所有这些值之后,我想将其写入新的文本文件(out2.txt)。请提出建议。谢谢!
我已经尝试过此代码;
content = open('out.txt','r').readlines()
content_set = set(content)
cleandata = open('clean.txt','w')
for line in content_set:
cleandata.remove(0)
我不断收到此错误:
cleandata.remove(0)
AttributeError: '_io.TextIOWrapper' object has no attribute 'remove'
数据文件out.txt
75*0 78.8502 45.9301 13358*0 10.7678 0 23.9901 43.8503 77*0 1.3757 36.9888 15.0398 76*0 8.19519 0 4.11938 21.4933 23.832 76*0 34.7566
15.5595 21.0239 0 47.1607 76*0 14.9065 52.916 51.7825 13358*0 62.4689 22.8217 15.68 77*0 12.8943 0 32.1276 14.1273 76*0 39.6095
70.8503 72.8765 45.7607 76*0 12.5657 72.7567 58.0161 30.9 76*0 19.5879 648.696 111.501 13358*0 17.36 18.0555 85.0358 77*0 4.62265
55.7498 61.2049 76*0 762.354 8.34207 23.2367 16.0517 76*0 405.637 20.1265 8.17844 16.4698 76*0 107.228 35.1968 38.4117 13358*0
解决方法
尝试一下:
with open('out.txt') as f:
s=f.read()
s=' '.join([i for i in s.split(' ') if i!='0' and '*0' not in i])
with open('out2.txt','w') as f:
f.write(s)
输出:
78.8502 45.9301 10.7678 23.9901 43.8503 1.3757 36.9888 15.0398 8.19519 4.11938 21.4933 23.832 34.7566
15.5595 21.0239 47.1607 14.9065 52.916 51.7825 62.4689 22.8217 15.68 12.8943 32.1276 14.1273 39.6095
70.8503 72.8765 45.7607 12.5657 72.7567 58.0161 30.9 19.5879 648.696 111.501 17.36 18.0555 85.0358 4.62265
55.7498 61.2049 762.354 8.34207 23.2367 16.0517 405.637 20.1265 8.17844 16.4698 107.228 35.1968 38.4117
,
这应该可行:
content = open('out.txt','r').readlines()
cleandata = []
for line in content:
line = {i:None for i in line.replace("\n","").split()}
for value in line.copy():
if value == "0" or value.endswith("*0"):
line.pop(value)
cleandata.append(" ".join(line) + "\n")
open('clean.txt','w').writelines(cleandata)
,
content = open("out.txt").read()
segments = content.split()
for segment in range(len(segments)):
if segments[segment]=="0" or segments[segment].endswith("*0"):
del segments[segment]
clean = open("clean.txt","w")
clean.write(" ".join(segments))
clean.close()
这是将out.txt
和split()
的所有内容都放在所有空白上(无参数表示所有空白)。然后,它遍历每个段,并在每个段上循环,检查该段是0
还是包含*0
,如果有,则从segments
中删除该段。最后,它创建clean.txt
,将所有句段用空格隔开,然后关闭clean.txt
。
我注意到的唯一问题是,当它写入clean.txt
时,它们之间用空格而不是原始空格隔开。解决此问题的一种方法是在每个数字之后存储空格,当空格包含0
或包含*0
时,销毁该段及其相关的空格。
尝试一下,并在评论中告诉我是否可行!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。