удалить конкретную строку, которая включает в себя последовательность клавиш чисел Python - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть приведенный ниже файл данных, и я хочу удалить всю строку, содержащую число «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()

Ответы [ 3 ]

0 голосов
/ 21 сентября 2018

Если вы хотите использовать панд, вы можете сделать это в три строки:

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)

Этот подход может быть легко расширен для выполнения других типов фильтрации или манипулирования вашими данными.

0 голосов
/ 21 сентября 2018

Один из способов, которыми вы можете воспользоваться, - это использовать регулярные выражения, которые вначале фиксируют 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()

Надеюсь, это хорошо работает.

0 голосов
/ 21 сентября 2018
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()

Попробуйте это

...