Python string打印为[u'string']

2024-04-20 13:20:03 发布

您现在位置:Python中文网/ 问答频道 /正文

这肯定很容易,但我真的很烦。

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

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

每次我要打印一个包含“String”的变量时,我都会将[u'String']打印到屏幕上。有没有一种简单的方法把它重新转换成ascii,或者我应该编写一个regex来删除它?


Tags: 字符串文本脚本网页string链接contentsascii
3条回答

如果访问/打印单个元素列表(例如,顺序或筛选):

my_list = [u'String'] # sample element
my_list = [str(my_list[0])]

您可能有一个包含一个unicode字符串的列表。这里的repr[u'String']

可以使用以下任何变体将其转换为字节字符串列表:

# Functional style.
print map(lambda x: x.encode('ascii'), my_list)

# List comprehension.
print [x.encode('ascii') for x in my_list]

# Interesting if my_list may be a tuple or a string.
print type(my_list)(x.encode('ascii') for x in my_list)

# What do I care about the brackets anyway?
print ', '.join(repr(x.encode('ascii')) for x in my_list)

# That's actually not a good way of doing it.
print ' '.join(repr(x).lstrip('u')[1:-1] for x in my_list)

[u'ABC']将是unicode字符串的单元素列表。Beautiful Soup always produces Unicode。因此,您需要将列表转换为单个unicode字符串,然后将其转换为ASCII。

我不知道你是如何得到一个元素列表的;contents成员是一个字符串和标记的列表,这显然不是你所拥有的。假设您总是得到一个只有一个元素的列表,并且您的测试实际上是ASCII,那么您将使用以下命令:

 soup[0].encode("ascii")

但是,请再次检查您的数据是否真的是ASCII。这很少见。更有可能是拉丁语-1或utf-8。

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


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

或者你问Beautiful Soup最初的编码是什么,然后用这个编码把它恢复过来:

 soup[0].encode(soup.originalEncoding)

相关问题 更多 >