无法正确 UTF-8 编码存储在 CSV 中的数据

少糖

我有一个简单的脚本来从公共站点抓取一些信息,然后将数据附加到 CSV 文件中:

import requests
import base64
import csv
from lxml import html
from lxml import etree

print (csv.list_dialects())

startUrl = "http://example.com?page="
#max. 964
for i in range (1,20):
    print (i)
    page = requests.get(startUrl+str(i))
    tree = html.fromstring(page.content)
    for element in tree.xpath('//*[@class="std-link std-link--unobtrusive std-link--visitable std-bold"]/@href'):
            subpage = requests.get(element)
            subtree = html.fromstring(subpage.content)
            study = subtree.xpath('//*[@class="std-profileHero__headline"]/h1/text()')
            uni = subtree.xpath('//*[@class="std-headline std-headline--h3"]/a/text()')
            if study:
                study = study[0].replace("\n"," ").replace("\t"," ")
                study = str(study.encode("utf-8")).strip()
            else:
                study = "-"

            if uni:
                uni = uni[0].replace("\n"," ").replace("\t"," ")
                uni = str(uni.encode("utf-8")).strip()
            else:
                uni = "-"   

            with open("results.csv", "a", newline="", encoding="utf-8") as csv_file:
                writer = csv.writer(csv_file, delimiter=";")
                writer.writerow([uni, study])

该脚本有效,但存储在 CSV 中的信息存在编码问题,因此我得到如下值:

  • b'Cat\xc3\xb3lica 里斯本商学院
  • b'大学\xc3\xa4t奥格斯堡'
  • b'软件工程'

当我在 MS Excel 2016 中打开 CSV 时,这些值会保留。

如您所见,脚本对字符串进行编码:.encode("utf-8"). 我还确保 CSF 文件已编码:encoding="utf-8".

我尝试使用该encode()功能,但随后编码在德语字符(如üä等)上被破坏

我究竟做错了什么?

阿鲁塞克

出现奇怪值的原因是您使用的是str(b'bytes')而不是str(b'bytes', encoding),它的作用类似于repr(b'bytes')并给您"b'bytes'"而不是"bytes"

因此,您应该完全对对象进行操作,或者完全对str对象进行操作bytes

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JSP / GlassFish:如何正确设置UTF-8编码

来自分类Dev

为什么仅在远程计算机上无法正确显示UTF-8编码的字符

来自分类Dev

使git diff正确显示UTF8编码的字符

来自分类Dev

C#:将shift-JIS中的日语文本编码转换为ASCII并存储为UTF-8

来自分类Dev

GAE数据存储区:无法使UTF-8用作默认编码

来自分类Dev

utf-8中字符的编码问题

来自分类Dev

无法通过Apache Jena在生成的XML中显示UTF-8编码

来自分类Dev

Volley请求中的UTF-8编码

来自分类Dev

下载编码ServiceStack的CSV文件(UTF 8)

来自分类Dev

来自REST查询的UTF-8编码字符无法正确呈现

来自分类Dev

UTF 8编码在PHP中无法正常工作

来自分类Dev

重新编码无法在utf-8中解码的字节

来自分类Dev

从Django返回以BOM表以UTF-8编码的csv

来自分类Dev

如何在Excel 2010中使用VBA查询UTF-8编码的CSV文件?

来自分类Dev

Python中的UTF-8编码

来自分类Dev

使用UTF-8编码创建新的csv

来自分类Dev

将数据保存为CSV并编码为utf-8

来自分类Dev

如何上传CSV并以UTF-8编码显示?

来自分类Dev

无法将带有塞浦路斯数据的csv文件上传到Google Data Studio-编码utf-8错误

来自分类Dev

无法将csv编码为UTF-8

来自分类Dev

使用UTF-8编码将csv文件导入R数据帧

来自分类Dev

Python 3-将utf-8编码的csv读取到熊猫中

来自分类Dev

Excel使用UTF8编码与UTF8-Bom编码保存CSV文件的行为

来自分类Dev

GAE数据存储区:无法使UTF-8用作默认编码

来自分类Dev

如何在Excel 2010中使用VBA查询UTF-8编码的CSV文件?

来自分类Dev

输出CSV文件编码不正确的UTF-8

来自分类Dev

UTF-8无法在我的python代码中编码UTF-8字符。它们显示为原义UTF-8

来自分类Dev

为什么`file -i`确定文件编码为ASCII,但在git存储库中实际上是UTF-8

来自分类Dev

在 ruby utf-8 错误中编码

Related 相关文章

  1. 1

    JSP / GlassFish:如何正确设置UTF-8编码

  2. 2

    为什么仅在远程计算机上无法正确显示UTF-8编码的字符

  3. 3

    使git diff正确显示UTF8编码的字符

  4. 4

    C#:将shift-JIS中的日语文本编码转换为ASCII并存储为UTF-8

  5. 5

    GAE数据存储区:无法使UTF-8用作默认编码

  6. 6

    utf-8中字符的编码问题

  7. 7

    无法通过Apache Jena在生成的XML中显示UTF-8编码

  8. 8

    Volley请求中的UTF-8编码

  9. 9

    下载编码ServiceStack的CSV文件(UTF 8)

  10. 10

    来自REST查询的UTF-8编码字符无法正确呈现

  11. 11

    UTF 8编码在PHP中无法正常工作

  12. 12

    重新编码无法在utf-8中解码的字节

  13. 13

    从Django返回以BOM表以UTF-8编码的csv

  14. 14

    如何在Excel 2010中使用VBA查询UTF-8编码的CSV文件?

  15. 15

    Python中的UTF-8编码

  16. 16

    使用UTF-8编码创建新的csv

  17. 17

    将数据保存为CSV并编码为utf-8

  18. 18

    如何上传CSV并以UTF-8编码显示?

  19. 19

    无法将带有塞浦路斯数据的csv文件上传到Google Data Studio-编码utf-8错误

  20. 20

    无法将csv编码为UTF-8

  21. 21

    使用UTF-8编码将csv文件导入R数据帧

  22. 22

    Python 3-将utf-8编码的csv读取到熊猫中

  23. 23

    Excel使用UTF8编码与UTF8-Bom编码保存CSV文件的行为

  24. 24

    GAE数据存储区:无法使UTF-8用作默认编码

  25. 25

    如何在Excel 2010中使用VBA查询UTF-8编码的CSV文件?

  26. 26

    输出CSV文件编码不正确的UTF-8

  27. 27

    UTF-8无法在我的python代码中编码UTF-8字符。它们显示为原义UTF-8

  28. 28

    为什么`file -i`确定文件编码为ASCII,但在git存储库中实际上是UTF-8

  29. 29

    在 ruby utf-8 错误中编码

热门标签

归档