utf-8 encoding and greek characters
当我设法获得我需要的所有数据并将其保存在一个cv文件中时,我得到的输出是utf-8格式,这是正常的(如果我错了,请纠正我)。
tbh我已经"播放"了.encode()和.decode()选项,没有任何结果。
这是我的密码
1
| brands=[name.text for name in Unibrands] |
这是输出
1
| u'Spirulina \u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ae' |
这是期望的输出
- print()结果。
- 基本上,您将看到所述字符串的repr()输出,在这里,您通常会得到某些字符的转义序列。如果您按照@宏李杰建议的结果执行EDOCX1[1],那么您将正确获得字符串输出。
- @李宏,我做了,结果是U'spirulinau0395u03bbu03bbu03b7u03bdu03b9u03bau03ae'
- u'前缀意味着您仍在查看所述字符串的repr()输出,而不是字符串内容。–您是打印字符串还是brands列表?
- 如果我用的标签不清楚的话,我会和美容师一起工作…
这个字符串已经很好了;您看到的是它的repr,它确实转义了某些字符,因为这样可以安全地直接复制和粘贴到python源代码中(在python 2.x中意味着它只需要有可打印的ASCII字符),例如,\u0395表示代码点U+0395希腊大写字母epsilon。您看到它的这种形式是因为打印一个列表(或其他容器)总是显示它的内容的repr--如果您直接使用print--字符串,则应该看到一个适当的glyph而不是转义形式:
1 2
| >>> print(u'Spirulina \u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ae')
>>> 'Spirulina Ελληνικ?' |
您还可以考虑升级到更新的python版本;python 3.5(以及可能更早的3.x版本)不再在repr中转义这些字母,因为python现在默认接受源文件中的Unicode字符。
- 我认为BS4与Python3.5及更高版本不兼容
- @volpym根据其pypi页面,bs4支持3.x。它只说3.4并不重要,后面的3.x版本仍然兼容。
- 我升级到了python 3.0并开始获得所需的输出。因此,我记下了你的答案;)