gpt4 book ai didi

Python - 将行拆分为列 - csv 数据

转载 作者:太空宇宙 更新时间:2023-11-03 12:45:21 24 4
gpt4 key购买 nike

我正在尝试从 csv 文件中读取数据,将每一行拆分为相应的列。

但是当特定列本身有逗号时,我的正则表达式会失败。

例如:a,b,c,"d,e,g",f

我想要这样的结果:

a    b    c    "d,e, g,"    f  

这是 5 列。

这是我用来用逗号分割字符串的正则表达式

,(?=(?:"[^"]?(?:[^"])*))|,(?=[^"]+(?:,)|,+|$)

但它对少数字符串无效,而对其他字符串有效。

我要寻找的是,当我使用 pyspark 从 csv 读取数据到 dataframe/rdd 时,我想加载/保留所有列而不会出现任何错误

谢谢

最佳答案

在更新的 regex 的帮助下更容易模块:

import regex as re

string = 'a,b,c,"d,e, g,",f'
rx = re.compile(r'"[^"]*"(*SKIP)(*FAIL)|,')

parts = rx.split(string)
print(parts)
# ['a', 'b', 'c', '"d,e, g,"', 'f']

它支持(*SKIP)(*FAIL)机制,在此示例中忽略双引号之间的所有内容。


如果你转义了双引号,你可以使用:

import regex as re

string = '''a,b,c,"d,e, g,",f, this, one, with "escaped \"double",quotes:""'''
rx = re.compile(r'".*?(?<!\\)"(*SKIP)(*FAIL)|,')
parts = rx.split(string)
print(parts)
# ['a', 'b', 'c', '"d,e, g,"', 'f', ' this', ' one', ' with "escaped "double",quotes:""']

regex101.com 上查看后者的演示.


将近50分,感觉也提供了 csv方法:

import csv
string = '''a,b,c,"d,e, g,",f, this, one, with "escaped \"double",quotes:""'''

# just make up an iterable, normally a file would go here
for row in csv.reader([string]):
print(row)
# ['a', 'b', 'c', 'd,e, g,', 'f', ' this', ' one', ' with "escaped "double"', 'quotes:""']

关于Python - 将行拆分为列 - csv 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38855648/

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