Можно ли в регулярных выражениях использовать циклы?
Необходимо извлечь данные из файла Data.txt и сохранить их в отдельный CSV-файл.
Вот как выглядит содержимое файла Data.txt:
["s@Onedøøm - Alliance - Argent Dawn@internalData@bagQuantity"] = {
["i:206439"] = 21,
["i:173246::+15"] = 31,
["i:203815::i75"] = 1,
},
["s@Souldust - Alliance - Mal'Ganis@internalData@bagQuantity"] = {
["i:206439"] = 11,
["i:173246::+15"] = 1,
["i:70138"] = 111,
},
["s@Travelbag - Alliance - Draenor@internalData@bagQuantity"] = {
["i:206439"] = 1,
["i:70138"] = 11,
},
Я написал скрипт, который извлекает данные с сервера "Argent Dawn" и сохраняет их в CSV-файл.
import re
import csv
with open(r'Data.txt', 'r', encoding='utf-8') as file:
data_bag = re.search(r'\["s@Onedøøm - Alliance - Argent Dawn@internalData@bagQuantity"\] = {([^}]*)}',
file.read())
data_bag = data_bag.group(1)
data_bag = re.sub('::\+15', '', data_bag)
data_bag = re.sub('::i75', '', data_bag)
data_bag = re.findall(r'\d+', data_bag)
data_bag_id = [v for k, v in enumerate(data_bag) if not k % 2]
data_bag_qty = [v for k, v in enumerate(data_bag) if k % 2]
with open('Onedøøm - Alliance - Argent Dawn.csv', 'w', newline='') as f:
csv_writer = csv.writer(f)
csv_writer.writerow(('item_id', 'quantity'))
for bag_id, bag_qty in zip(data_bag_id, data_bag_qty):
csv_writer.writerow([bag_id, bag_qty])
Мне нужно получить данные с трёх серверов. Я мог бы просто скопировать этот код и заменить вручную «Onedøøm — Alliance — Argent Dawn» на «Souldust — Alliance — Mal'Ganis», но можно ли это сделать с помощью цикла?