Python编码(去掉不必要的符号)

Python编码(去掉不必要的符号),python,encoding,Python,Encoding,我正在用lxml模块抓取一个页面。 使用以下代码正确地刮除所有内容: some_element.text_content().encode('utf-8').strip() 但有一个元素返回'+\xc2\xad255550'字符串,而不是'+25550'(如第页所示)。如果删除encode方法,则返回u'+\xad2550'。 应该使用什么来获取“+25550”字符串?str.strip()仅从开始和结束处删除空白。它不会删除中间的空白。此外,字符串中有一个字符,而不是空格 您可以使用传递给的

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

some_element.text_content().encode('utf-8').strip()
但有一个元素返回
'+\xc2\xad255550'
字符串,而不是
'+25550'
(如第页所示)。如果删除encode方法,则返回
u'+\xad2550'

应该使用什么来获取
“+25550”
字符串?

str.strip()
仅从开始和结束处删除空白。它不会删除中间的空白。此外,字符串中有一个字符,而不是空格

您可以使用传递给的转换映射显式删除字符:

toremove
中的每个键必须是一个表示Unicode码点的整数(此处指定为十六进制整数文字),其值
None
表示
Unicode.translate()
完全删除字符

演示:


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

如果您打印它,您将得到您想要的
print('+\xc2\xad2550')
将为您提供
+-25550
@BurhanKhalid,不,我也得到了我写的东西。@lakesare:那么您不是在打印unicode字符串本身。如果将UTF-8字符串写入未配置为处理UTF-8的控制台或终端,则会出现乱码(a)或错误。'TypeError:expected a character buffer object'以某种方式上升(尽管我可以用自己编写的字符串重复!)。(我使用strip()来消除内容前后的空白,就像应该使用的一样。我只是认为它可能会对代码产生一些我无法预料的影响)@lakesare:注意,我指定在编码之前,对unicode值使用
translate()
方法。出现您看到的错误是因为您在
str
string对象上使用了
dict
转换映射。
toremove = {0xAD: None}
some_element.text_content().translate(toremove).encode('utf8')
>>> sample = u'+\xad25550'
>>> toremove = {0xAD: None}
>>> sample.translate(toremove)
u'+25550'
some_element.text_content().encode("ascii", "ignore").strip()