Python编码(摆脱不必要的符号)

时间:2014-10-15 11:36:02

标签: python encoding

我正在使用 lxml 模块抓取一个页面。 使用以下代码正确删除所有内容:

some_element.text_content().encode('utf-8').strip()

但是一个元素返回'+\xc2\xad25550'字符串而不是'+25550'(如页面所示)。如果我删除编码方法,则返回u'+\xad25550' 应该用什么来获取'+25550'字符串?

2 个答案:

答案 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()

为我返回了干净的字符串。