Можно ли в регулярных выражениях использовать циклы?

Необходимо извлечь данные из файла 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», но можно ли это сделать с помощью цикла?


Ответы (0 шт):