我有下面的数据文件,我想删除第一列中包含“ 30”数字的整行。此号码始终处于此位置。
我想的是读取文件并用第一列创建一个列表 并检查列表中的每个项目是否都存在这个数字“ 30”,然后删除给出索引的整行。
但是我不确定如何进行。
请让我知道您的想法。
这是我到目前为止尝试过的:
f = open("file.txt","r")
lines = f.readlines()
f.close()
f = open("file.txt","w")
for line in lines:
if line!="30"+"\n":
f.write(line)
f.close()
答案 0 :(得分:0)
f = open("file.txt", "r")
lines = f.readlines()
f.close()
f = open("file.txt", "w")
for line in lines:
if '30' not in line[4:6]:
f.write(line)
f.close()
尝试一下
答案 1 :(得分:0)
如果您愿意使用熊猫,则可以分三行进行:
import pandas as pd
# Read in file
df = pd.read_csv("file.txt", header=None, delim_whitespace=True)
# Remove rows where first column contains '30'
df = df[~df[0].str.contains('30')]
# Save the result
df.to_csv("cleaned.txt", sep='\t', index=False, header=False)
可以轻松扩展此方法以执行其他类型的过滤或处理数据。
答案 2 :(得分:0)
您可以使用的一种方法是使用开头捕获30个正则表达式的方式是这样的:
import re
f = open("file.txt", "r")
lines = f.readlines()
f.close()
f = open("file.txt", "w")
for line in lines:
if re.search(r'^\d*30',line):
f.write(line)
f.close()
希望它运作良好。