Python: Преобразование объекта байта в строку, удаление \, а затем запись в список возвращает \. косые - PullRequest
0 голосов
/ 10 апреля 2020

Я занимаюсь синтаксическим анализом html, который в настоящее время находится в байтовой форме, преобразовав его в строку, а затем записав в список. Я хочу удалить все косые черты (или даже просто красиво обработать escape-символы).

Вот мой код:

picture_divs = [b'<img alt="Python\'s Confusing me." class="" src="https://link_goes_here" style="whatever;"/>']

def get_alt_text(picture_divs):
    alt_text = []
    for i, elem in enumerate(picture_divs):
        str_elem = str(elem).replace('\\', '')  # Convert bytes -> strings
        start_index = int(str_elem.find('alt='))
        end_index = int(str_elem.find('class='))
        alt_text.append(str_elem[start_index + 4:end_index])

    return alt_text


alt_text_return = get_alt_text(picture_divs)
print(alt_text_return)

Вывод: ['' Python \ 's Confusion me.' ']

Требуемый вывод: [' "Python s Confusion me." «]

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

Вот одно из возможных решений для очистки:

>>> from re import sub
>>> picture_divs = [b'<img alt="Python\'s Confusing me." class="" src="https://link_goes_here" style="wha
tever;"/>']
>>> for div in picture_divs:
...     rev1 = sub(r'[\\/]', '', div.decode('utf-8'))
...     rev2 = rev1.replace('\'', "'")
...     print(rev2)
... 
<img alt="Python's Confusing me." class="" src="https:link_goes_here" style="whatever;">
>>> 
1 голос
/ 10 апреля 2020

Решение, которое вы запрашиваете, - это ошибка для синтаксиса python. Python создает список в формате

list_example = ['a','b']

Если вы sh хотите, чтобы 'Python сбивает меня с толку' в списке, то вы видите, как открытая одиночная цитата закрывается вашей одиночная кавычка. Поэтому python помещает обратную косую черту sh, чтобы переопределить одинарную кавычку и не выдавать ошибку.

...