Я работаю с файлом дампа GeoNames и хотел бы, чтобы скрипт работал. Он должен: 1) взять строку из первого текстового файла, например,
Джалал-Абад, AF
2) Взять "Jalalabad" как var1 и "AF" как var2 и использовать его при поиске в другом TXT-файл, в котором есть строка, например:
7053281 Джалалабад Джалал-Абад, Бихсуд, Джалал-Абад, Джалалабад, Бхсвд, Джалал-Абад, بهسود, جلال آباد 34.42189 70.463501 A-02/2018 АД201 / АСБ 2012 / АСБ 2018 / АСБ-02, Южная Африка, 18 апреля 2001 г., воеводство, воеводство, воеводство, воеводство, во вс.
Если он найден во втором списке, я хотел бы скопировать всю строку (пример выше) в третий файл, также в txt. Это мой сценарий:
myfile ='Geo.txt'
myfile2 = 'allADM.txt'
myfile3 = open('GeoSearch.txt','w',encoding="utf-8")
mylist = []
mylist2 = []
with open(myfile,'r',encoding='utf-8') as myfile:
for row in myfile:
row = row.split(", ")
var1, var2 = row
mylist.append(row)
with open(myfile2,'r',encoding='utf-8') as myfile2:
for row in myfile2:
row = row.strip()
mylist2.append(row)
for i in mylist:
if i[0] in mylist2.row and i[1] in mylist2.row:
myfile3.write(f"{mylist2.row}\n")
else:
pass
Я получаю сообщение об ошибке: Traceback (последний вызов был последним): файл "C: / Users / xxx / Documents / python work / GeoNameSearch.py", строка 24, если i [0] в mylist2.row и i [1] в mylist2.row: AttributeError: у объекта 'list' нет атрибута 'row'
myfile = 'Geo.txt' - все вещи, которые я хочу запросить
myfile2 = 'allADM.txt' - массивный файл дампа, который я хочу найти в
myfile 3 = выходной файл
Любая помощь приветствуется!
EDIT1: изменена последняя часть:
for i in mylist2:
if var1 in i and var2 in i:
myfile3.write(f"{i}\n")
else:
pass
, в результате чего я получил последний результат из файла поиска (12,5 тыс. Строк). Кажется, переменные var1 и var2 продолжали сбрасываться, так что он искал его только один раз.
EDIT2, второй скрипт (предлагается ниже + настройки) также возвращает пустой список:
with open('Geo.txt', 'r', encoding='utf-8') as queries:
search_data = set(queries.readlines())
with open('12.txt', 'r', encoding='utf-8') as dataset:
data = dataset.readlines()
matching_lines = []
for params in search_data:
param1, param2 = params.split(', ')
for line in data:
if param1 in line and param2 in line:
matching_lines.append(line)
with open('GeoSearch.txt', 'w', encoding='utf-8') as result:
for res in matching_lines:
result.write(f'{param1}|{param2}|{res}\n')