Есть ли подстановочный знак для нескольких символов в строке, который я могу передать функции .replace? - PullRequest
0 голосов
/ 17 апреля 2020

Я читаю определенные значения из файла json и записываю эти данные в новый файл. Конечная цель - перевод. json в файлы .yml (их более 350 тыс., Поэтому я не могу просто вставить их в онлайн-переводчик).

При этом я удаляю '<' теги ' > 'из данных. Я использую функцию .replace для записи новых строк без нежелательных подстрок.

Поскольку меня интересует только удаление строк, начинающихся с '<' и заканчивающихся '>', мне было интересно, есть ли подстановочный знак, такой как * или. это будет работать в функции .replace.

Вот мой код:

with open('example' + '.txt') as json_data:
data=json.load(json_data)
for r in data['posts']:
    fo = open(str(r['no'])+".txt","w")
    resp = "--" + r['com']
    resp=resp.replace("<br>","")
    resp=resp.replace('<span class="quote">&gt;','')
    resp=resp.replace('</span>','')
    resp=resp.replace('<span>','')
    fo.write(resp)
    fo.close()

Ответы [ 2 ]

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

Потенциальное решение:

import re
re.sub('(<\S[^<]*>)', '', text)

#Examples
text1 = '</span> something <span>'
re.sub('(<\S[^<]*>)', '', text1)
#' something '

text2 = '<span class="quote">'
re.sub('(<\S[^<]*>)', '', text2)
#''
0 голосов
/ 17 апреля 2020

Добро пожаловать в переполнение стека.

Вы можете использовать регулярное выражение, реализованное в python в модуле re.

import re
regexp = re.compile(r"<.*>")
regexp.sub("", text)

Заменяет все, что находится между <>, пустой строкой .

...