Python 在读取 CSV 文件时添加额外的文本和大括号

Python adding extra text and braces while reading from CSV file

提问人:NoobDev 提问时间:11/29/2021 最后编辑:wovanoNoobDev 更新时间:11/29/2021 访问量:480

问:

我想使用 python 从 csv 文件中读取数据,但在使用以下代码后,文本中有一些额外的字符和大括号,这些字符和大括号不在原始数据中。 请帮助删除它。

import csv

with open("data.csv",encoding="utf8") as csvDataFile:
    csvReader = csv.reader(csvDataFile)

    for row in csvReader:
        print(row)

screenshot of orignal data

阅读后显示的是:- ['\ufeffwww.aslteramo.it']

python selenium csv 操作 数据 挖掘

评论

0赞 yakutsa 11/29/2021
这是一个重复的问题:stackoverflow.com/questions/17912307/u-ufeff-in-python-string/......
1赞 yakutsa 11/29/2021
这回答了你的问题吗?Python 字符串中的 u'\ufeff'
0赞 Martin Evans 11/29/2021
你用什么来查看文件?另外,你是如何运行 Python 的?并非所有内容都可以显示 utf-8 编码

答:

0赞 wovano 11/29/2021 #1

\ufeff是 UTF-8 BOM(也称为“ZERO WIDTH NO-BREAK SPACE”字符)。

它有时用于指示文件是 UTF-8 格式。

您可以在代码中使用它来摆脱它。喜欢这个:str.replace('\ufeff', '')

import csv

with open("data.csv",encoding="utf8") as csvDataFile:
    csvReader = csv.reader(csvDataFile)
    for row in csvReader:
        print([col.replace('\ufeff', '') for col in row])

另一种解决方案是使用“utf-8-sig”编码而不是“utf-8”编码打开文件。

顺便说一句,大括号是添加的,因为是一个列表。如果您的 CSV 文件只有一列,您可以从每行中选择第一项,如下所示:row

print(row[0].replace('\ufeff', ''))
1赞 HPringles 11/29/2021 #2

这是带有字节顺序标记 (BOM) 的 utf-8 编码 - 在 Windows 中用作签名。

使用编码而不是utf-8-sigutf8