删除包含关键数字序列的特定行python

时间:2018-09-21 08:42:57

标签: python data-files

我有下面的数据文件,我想删除第一列中包含“ 30”数字的整行。此号码始终处于此位置。

我想的是读取文件并用第一列创建一个列表 并检查列表中的每个项目是否都存在这个数字“ 30”,然后删除给出索引的整行。

但是我不确定如何进行。

请让我知道您的想法。

Datafile

这是我到目前为止尝试过的:

  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()

3 个答案:

答案 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()

希望它运作良好。