Как вы не можете добавлять символы пробела при вызове str()? У меня есть скребок экрана/веб-искатель, который использует urllib.request. Я вызываю str() в своем контенте. Вот код, который у меня есть.Метод str() добавляет пробельные символы
req = urllib.request.Request(national_url, headers={'User-Agent' : "Magic Browser"})
con = urllib.request.urlopen(req)
#grab html
html = con.read()
my_str = str(html)
проблемы я использовать регулярное выражение для разбора этого HTML для некоторых моделей, и ул добавляет все пробельные символы, такие как \ п и \ т.
Мой вопрос в том, как предотвратить функцию str() от добавления этих дополнительных символов символов.
EDIT
Я использовал urllib2 раньше в Python 2.7 сценарий я написал. Я перевел его на новый компьютер, но начал использовать python 3.6 на этом компьютере. Эти регулярные выражения больше не работали. Я получал ошибку, когда передал con.read() этой функции. Я завернул con.read() в вызове str(), как показано выше, и я заметил в 3.6, когда функция con.read() добавила целую кучу \ t и n. Мой вопрос заключается в том, как я могу заставить мои выражения работать или запрещать все «символы символов charator», иначе известные как «\ t \ n» (я буду признавать, что, вероятно, я использую неправильный термин для этих символов).
Это работало в Python 2.7. Я переключился на python 3.6.
def parse_html_doc(str='', poke_id = 0):
if len(str) > 0:
poke = MyClass()
poke.dex_num = re.search('\d+(?=<\/strong>)', str).group(0)
poke.name = re.search('[A-Za-z]+(?=<\/h1>)', str).group(0)
poke.hp = re.search('\d+', re.search('<th>HP<\/th>\s+<td class="num">\d+<\/td>', str).group(0)).group(0)
poke.atk = re.search('\d+', re.search('<th>Attack<\/th>\s+<td class="num">\d+<\/td>', str).group(0)).group(0)
poke.bdef = re.search('\d+', re.search('<th>Defense<\/th>\s+<td class="num">\d+<\/td>', str).group(0)).group(0)
poke.spatk = re.search('\d+', re.search('<th>Sp\. Atk<\/th>\s+<td class="num">\d+<\/td>', str).group(0)).group(0)
poke.spatk = re.search('\d+', re.search('<th>Sp\. Def<\/th>\s+<td class="num">\d+<\/td>', str).group(0)).group(0)
poke.spd = re.search('\d+', re.search('<th>Speed<\/th>\s+<td class="num">\d+<\/td>', str).group(0)).group(0)
poke.des = re.search('<p>.*<\/p>', str).group(0).replace('"', '""')
poke.id = poke_id
return poke
Уточнитните «Добавление этих дополнительных литералов характера». Вы имеете в виду, что их там нет, пока вы не назовете str, а затем они появятся после? Или вы имеете в виду, что вам не нравится, как они отображаются? Можете ли вы привести пример использования? – SethMMorton
«str добавляет все пробельные символы, такие как \ n и \ t" - нет, это не так. «проблема в том, что я использую regex для анализа этого html для некоторых шаблонов» - да, это, безусловно, проблема. Не используйте регулярные выражения для анализа HTML. Используйте настоящий парсер, например BeautifulSoup. – user2357112
'str()' не добавляет эти символы - они существуют все время - и поэтому мы используем синтаксические анализаторы, такие как 'lxml' или' BeautifulSoup'. – furas