Как зациклить файл и извлечь строки, содержащие столбец определенного значения? - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть файл, содержащий множество строк, выглядящих следующим образом:

one two three four
one three four five
one one three four
one two three four

Я написал функцию, которая будет нуждаться в вводе первого и последнего слов в каждой строке.

Но только в случае, когда второе слово «два», поэтому в лучшем из миров я должен извлечь определенные строки и убрать слова, и должен получить это:

one four
one four

Так как слово дваможет встречаться в других столбцах, я не могу просто найти слово и извлечь эту строку в новый файл.Должен ли я, возможно, преобразовать его в CSV-файл, а затем работать оттуда?

На данный момент мой сценарий удаляет только первые 4 столбца текстового файла

f = open("blah.txt", "r")
g = open("datafile_fixed.txt", "w")

for line in f:
    if line.strip():
        g.write(" ".join(line.split()[4:]) + "\n")

f.close()
g.close()

Так что я ужеудалить часть исходного файла.Могу ли я волшебным образом лишить линии еще больше, чтобы удалить ненужные линии?Главное, чтобы у меня оставались только строки, тогда я мог бы легко удалить второй и третий столбцы.

1 Ответ

0 голосов
/ 23 февраля 2019

Просто нужно добавить условие, чтобы проверить, является ли второе слово two :

with open('blah.txt', mode='r') as f, open('datafile_fixed.txt', mode='w') as g:
    for line in f.readlines():
        w1, w2, _, w4 = line.split()
        if w2 == 'two':
            g.write(w1 + ' ' + w4)

Здесь ключевая строка w1, w2, _, w4 = line.split().Что делает split, так это возвращает список строк после разбиения заданной строки указанным разделителем (в этом ничего, что по умолчанию относится к пробелу), поэтому он вернет список с 4 элементами ["one", "two", "three", "four"].

Python позволяет распаковать этот список, если вы назначаете его нескольким переменным (то же самое число, что и длина списка), поэтому, выполнив w1, w2, w3, w4 = ["one", "two", "three", "four"], вы назначаете "one" на w1 , "two" на w2 и т. д.

Тогда нам просто нужно проверить, является ли второе слово "two".если так, мы напишем в новом файле.В противном случае мы ничего не будем делать с этой строкой и перейдем к следующей в цикле, делая то же самое.

...