Я пытаюсь автоматизировать поиск + замену для ряда неработающих ссылок на изображения в файлах .rst. У меня есть CSV-файл, где столбец A является "старой" ссылкой (которая видна в RST-файлах), а столбец B является новой ссылкой для замены для каждой строки.
Я не могу сначала использовать pandoc для преобразования в HTML, потому что он «ломает» первый файл.
Я сделал это один раз для набора файлов HTML, используя BeautifulSoup и regex, но этот анализатор не будет работать для моих первых файлов.
Коллега предложил попробовать Grep, но я не могу понять, как вызвать файл csv, чтобы выполнить "match" и переключиться.
для html-файлов, он будет проходить по каждому файлу, искать тег img и заменять ссылки, используя файл csv в качестве dict
with open(image_csv, newline='') as f:
reader = csv.reader(f)
next(reader, None) # Ignore the header row
for row in reader:
graph_main_nodes.append(row[0])
graph_child_nodes.append(row[1:])
graph = dict(zip(graph_main_nodes, graph_child_nodes)) # Dict with keys in correct location, vals in old locations
graph = dict((v, k) for k in graph for v in graph[k])
for fixfile in html:
try:
with open(fixfile, 'r', encoding='utf-8') as f:
soup = BeautifulSoup(f, 'html.parser')
tags = soup.findAll('img')
for tag in tags:
print(tag['src'])
if tag['src'] in graph.keys():
tag['src'] = tag['src'].replace(tag['src'], graph[tag['src']])
replaced_links += 1
print("Match found!")
else:
orphan_links.append(tag["src"])
print("Ignore")
Мне бы хотелось несколько советов о том, как подойти к этому. Я бы с удовольствием переназначил свой код BeautifulSoup, но не уверен, что это реально.