Сделать ссылки на гиперссылки в CSV-файле через Python - PullRequest
0 голосов
/ 22 апреля 2020

Как сделать все ссылки в файле CSV гиперссылками? - Просто добавьте тег HTML во все поля со ссылками

Я думаю, что это возможно через Python

CSV строка выглядит как

"Name","CompanyName","Value1","Value2","Value3","Value4","Value5","Value6","Value7","Url","Value8 ""Value8.1"""
"Name","Company1","SomeValue1","SomeValue2","SomeValue3","SomeValue4","SomeValue5","SomeValue6","SomeValue7","https://company1.com","Some"Value8 ""Value8.1"""
"Name","Company2","SomeValue1","SomeValue2","SomeValue3","SomeValue4","SomeValue5","SomeValue6","SomeValue7","https://company2.com","Some"Value8 ""Value8.1"""

Должно выглядеть так:

"Name","CompanyName","Value1","Value2","Value3","Value4","Value5","Value6", "Value7","Url","Value8"
"Name","Company1","SomeValue1","SomeValue2","SomeValue3","SomeValue4","SomeValue5","SomeValue6","SomeValue7","<a href="https://company1.com">https://company1.com</a>","Some"Value8 ""Value8.1"""
"Name","Company2","SomeValue1","SomeValue2","SomeValue3","SomeValue4","SomeValue5","SomeValue6","SomeValue7","<a href="https://company2.com">https://company2.com</a>","Some"Value8 ""Value8.1"""
"Name","Company3","SomeValue1","SomeValue2","SomeValue3","SomeValue4","SomeValue5","SomeValue6","SomeValue7","<a href="https://company3.com">https://company3.com</a>","Some"Value8 ""Value8.1"""

Я пробовал awk и sed, но он делает много ошибок, когда я указываю столбец в файле. Я чувствую, что скрипт просто должен найти все ссылки и вставить его в теги HTML. Но я пока не понял, как это работает

Заранее спасибо

1 Ответ

0 голосов
/ 22 апреля 2020

Вот быстрый и грязный пример того, как это сделать. Вы можете увидеть примеры модуля csv здесь

В ваших примерах данных есть несколько лишних пробелов - если ваши реальные данные такие, вы можете использовать метод strip() для удаления пробелов.

Если ваши URL-адреса не всегда находятся в одном и том же столбце, это не сработает, и вам потребуется использовать регулярные выражения или urllib для их идентификации.

import csv

count = 0
with open('test.csv', 'r') as f:
    csv_reader = csv.reader(f)
    with open('outfile.csv', 'w') as outfile:
    for row in csv_reader:
        row[0] = f'"{row[0]}'
        if count < 1:
            outfile.write('","'.join(row) + '"\n')
            count += 1
        else:
            row[-2] = f'<a href="{row[-2]}">{row[-2]}</a>'
            outfile.write('","'.join(row) + '"\n')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...