我正在使用 lxml 模块抓取一个页面。 使用以下代码正确删除所有内容:
some_element.text_content().encode('utf-8').strip()
但是一个元素返回'+\xc2\xad25550'
字符串而不是'+25550'
(如页面所示)。如果我删除编码方法,则返回u'+\xad25550'
应该用什么来获取'+25550'
字符串?
答案 0 :(得分:0)
str.strip()
从开头和结尾仅删除空白。它不会从中间删除空格。此外,字符串中有U+00AD SOFT HYPHEN个字符,而不是空格。
您可以使用翻译地图明确删除该字符,并传递给unicode.translate()
method:
toremove = {0xAD: None}
some_element.text_content().translate(toremove).encode('utf8')
toremove
中的每个键必须是表示Unicode代码点的整数(此处指定为十六进制整数文字),值None
告诉unicode.translate()
完全删除该字符。
演示:
>>> sample = u'+\xad25550'
>>> toremove = {0xAD: None}
>>> sample.translate(toremove)
u'+25550'
答案 1 :(得分:0)
some_element.text_content().encode("ascii", "ignore").strip()
为我返回了干净的字符串。