Python: Извлечь несколько строк из .txt, которые совпадают с одним словом в другом .txt (например, функция grep) - PullRequest
0 голосов
/ 21 февраля 2019

Я новичок в мире питонов, так что прости меня, если я скажу несколько глупостей ... У меня проблема с моим сценарием, у меня огромный список станций (я назову этот огромный_лист.txt), который выглядит так:

1ULM MIDAS4 2003.4497 2019.1075 15.6578 5496 4984   7928 -0.013284 -0.000795    
20NA MIDAS4 2008.2355 2017.4511  9.2156 2793 2793   5010  0.031619  0.059160    
21NA MIDAS4 2008.2355 2017.4648  9.2293 3287 3287   5891  0.031598  0.059243    
25MA MIDAS4 2013.3717 2019.1075  5.7358 2007 1279   1398 -0.010216  0.016478    
299C MIDAS4 2003.0308 2007.0856  4.0548 1407 1407   2159 -0.003861 -0.021031
2TRY MIDAS4 2012.0465 2013.6564  1.6099  564  437    437  0.018726  0.054083

Первые четыре буквы строки - это названия станций (например, 25MA, 299C ...).Я создал .txt с именем некоторой станции (я назову это «station_list.txt») и выглядит так:

20NA
21NA
2TRY

и т. Д.

Что яя пытаюсь сделать, это создать файл .txt с теми строками файла large_list.txt, которые соответствуют названию станции в файле station_name.txt.Я могу сделать это, но только для одного элемента списка станций следующим образом:

with open ("station_name.txt", "r") as p:
    item='20NA'

def lines_that_start_with(string, fp):
    return [line for line in fp if line.startswith(string)]

with open ("station_line.txt", "w") as l:
    with open ("C:\huge_list.txt","r")as fp:
        for line in lines_that_start_with (item, fp):
            print line
        l.write (line)
l.close()

Как я могу запустить его для каждого элемента моего списка станций?

1 Ответ

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

Вы можете просто прочитать ваш файл station_name.txt в список, открыть файл huge_list.txt и разбить строки и посмотреть, есть ли первый элемент в вашем списке.Если это так, напишите строку в ваш новый файл.

stations = [line.rstrip("\n") for line in open("station_name.txt")]

l = open("station_line.txt", "w")
with open("huge_list.txt", "r") as fp:
    for line in fp.readlines():
        if line.split()[0] in stations:
            l.write(line)
...