一尘不染

Python字符串打印为[u'String']

python

这肯定是一件容易的事,但这确实困扰着我。

我有一个脚本,可以读取网页并使用Beautiful Soup对其进行解析。从汤中提取所有链接,因为我的最终目标是打印出link.contents。

我要解析的所有文本都是ASCII。我知道Python将字符串视为unicode,并且我确信这非常方便,在我的wee脚本中没有用。

每次我去打印一个包含’String’的变量时,我都会被[u'String']打印到屏幕上。是否有一种简单的方法可以将其恢复为ascii,还是应该编写一个正则表达式来删除它?


阅读 841

收藏
2020-02-22

共1个答案

一尘不染

[u'ABC']将是一元字符串的unicode字符串。美丽的汤总是产生Unicode。因此,你需要将列表转换为单个unicode字符串,然后将其转换为ASCII。

我不知道你是如何得到一元素清单的;content成员将是字符串和标签的列表,这显然不是你所拥有的。假设你确实总是得到一个包含单个元素的列表,并且你的测试实际上仅是 ASCII,则可以使用以下命令:

 soup[0].encode("ascii")

但是,请仔细检查你的数据是否真的是ASCII。这很少见。更有可能是latin-1或utf-8。

 soup[0].encode("latin-1")

 soup[0].encode("utf-8")

或者,你可以询问Beautiful Soup原始编码是什么,然后以该编码重新获取:

 soup[0].encode(soup.originalEncoding)
2020-02-22