gpt4 book ai didi

python - 使用双 'double quotes' 和嵌入式逗号在 Pandas 中读取 CSV 文件

转载 作者:太空宇宙 更新时间:2023-11-04 01:49:38 28 4
gpt4 key购买 nike

我需要在 Pandas 中读取一个 CSV 文件,该文件具有以下格式的数据(其中一个字段用双引号引起来)

"column1","column2","column3","column4"
"10",""AB"","ABCD","abcd"
"11",""CD,E"","CDEF","abcd"
"12",""WER"","DEF,31","abcd"

我希望正确解析的数据框是这样的

column1  column2  column3   column4
10 AB ABCD abcd
11 "CD,E" CDEF abcd
12 WER "DEF,31" abcd

我试过用

df= pd.read_csv('sample.txt',quotechar='""', quoting=csv.QUOTE_ALL)

df= pd.read_csv('sample.txt',quotechar='"', quoting=csv.QUOTE_ALL)

但是得到

TypeError: "quotechar" must be a 1-character string

pandas.errors.ParserError: Error tokenizing data. C error: Expected 4 fields in line 3, saw 5

有没有办法让我按原样读取这个文件,而不必预处理和删除数据中的双“双引号”?

column2 没有逗号时,我可以读取带有一些额外引号的数据,我可以在进一步的处理步骤中替换这些引号。只有当 column2 有逗号时,我才会遇到解析问题。

最佳答案

我不确定 pandas 是否可以自己做到这一点,因为您的数据中也有未转义的分隔符和引号。

但是,您应该能够在使用正则表达式通过转义属于该字段的引号来修改数据后对其进行解析。

import re
from io import StringIO

data = """
"column1","column2","column3","column4"
"10",""AB"","ABCD","abcd"
"11",""CD,E"","CDEF","abcd"
"12",""WER"","DEF,31","abcd"
"""

data = re.sub('(?<!^)"(?!,")(?<!,")(?!$)', '\\"', data, flags=re.M)

pd.read_csv(StringIO(data), escapechar='\\')

如果您正在从文件中读取,则:

with open('path/to/csv', 'r') as f:
data = re.sub('(?<!^)"(?!,")(?<!,")(?!$)', '\\"', f.read(), flags=re.M)
df = pd.read_csv(StringIO(data), escapechar='\\')

正则表达式查找不在开头的引号 (?<!^)或结束 (?!$)每行,以及不属于开头的引号 (?<!,")和结束 (?!,")每个领域的

关于python - 使用双 'double quotes' 和嵌入式逗号在 Pandas 中读取 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58325337/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com