首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >U前面的字符串

U前面的字符串
EN

Stack Overflow用户
提问于 2014-02-25 03:46:06
回答 3查看 757关注 0票数 1

使用漂亮的some,我解析了html表中的一些值,如下所示:

代码语言:javascript
复制
for string in soup.stripped_strings:
    all_tds.append(string)

当我将字符串打印为

代码语言:javascript
复制
for string in soup.stripped_strings:
    print string

我获取页面中的所有字符串,但当我将其存储在列表中时,如第一段所示,然后打印列表,则在字符串前面得到一个u(unicode),如下所示

代码语言:javascript
复制
[u'stormvirux (4pa11cs031)', u'Semester:', u'5', u'Result:\xa0\xa0FIRST CLASS', u'Subject', u'External', u'Internal', u'Total', u'Result', u'Software Engineering (10IS51)', u'58', u'24', u'82', u'P', u'Systems Software (10CS52)', u'70', u'24', u'94', u'P', u'Operating Systems (10CS53)', u'58', u'18', u'76', u'P', u'Database Management Systems (10CS54)', u'42', u'25', u'67', u'P', u'Computer Networks - I (10CS55)', u'62', u'23', u'85', u'P', u'Formal Languages & Automata Theory (10CS56)', u'37', u'24', u'61', u'P', u'Database Applications Laboratory (10CSL57)', u'40', u'25', u'65', u'P', u'Systems Software & Operating Systems Lab. (10CSL58)', u'40', u'21', u'61', u'P', u'Total Marks:', u'591']

如果我试图直接将string写到fl.write(string)文件中,就会得到错误

代码语言:javascript
复制
UnicodeEncodeError: 'ascii' codec can't encode characters in position 7-8: ordinal not in range(128)

为什么会发生这种情况,可以做些什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-25 04:10:53

使用codecs.open()io.open()使用适当的文本编码(即encoding="...")打开文本文件,而不是用open()打开字节文件。

票数 3
EN

Stack Overflow用户

发布于 2014-02-25 04:09:55

您可以看到列表中包含的Unicode字符串的表示形式。当您打印列表时,它中的每一项都会调用repr()

代码语言:javascript
复制
>>> s = u'text…'
>>> s
u'text\u2026'
>>> print(s)
text…
>>> print([s]) # <-- a list with a single item (the string)
[u'text\u2026']

u''是Unicode文本的语法,可用于在Python源代码中定义Unicode字符串。注意:如果在字符串文本中使用非ascii字符,则应该在模块顶部定义源代码编码,例如# -*- coding: utf-8 -*-

若要在写入文件时修复UnicodeEncodeError,需要将Unicode字符串转换为字节。 provides several html-specific ways去做吧。

注意:通常情况下,泛型codecs.open()io.open() suggested by @Ignacio Vazquez-Abrams不适合html文本,例如,它们不修改<meta charset="...">标记。

票数 2
EN

Stack Overflow用户

发布于 2014-02-25 03:51:38

尝试将它们转换为字符串:

代码语言:javascript
复制
for string in soup.stripped_strings:
    all_tds.append(str(string))

这里有一个清单理解:

代码语言:javascript
复制
all_tds = [str(string) for string in soup.stripped_strings]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22004144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档