gpt4 book ai didi

python - 从 CSV 文件的字符串列中删除新行

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

我有一个包含多个字段的 CSV 文件。数据跨越多行的字段(字符串)很少。我想将这些多行聚合成一行。

输入数据:

1, "asdsdsdsds", "John"
2, "dfdhifdkinf
dfjdfgkdnjgknkdjgndkng
dkfdkjfnjdnf", "Roy"
3, "dfjfdkgjfgn", "Rahul"

预期输出:

1, "asdsdsdsds", "John"
2, "dfdhifdkinf dfjdfgkdnjgknkdjgndkng dkfdkjfnjdnf", "Roy"
3, "dfjfdkgjfgn", "Rahul"

SO 中提出了同样的问题更早。然而,解决方案是使用电源外壳实现的。是否有可能使用 python 或 pandas 或 pyspark 实现相同的目标。

只要数据跨越多行,它肯定会用双引号引起来。

我尝试过的

即使有些字段跨越多行,我也可以使用 pandas 和 pyspark 毫无问题地读取数据。

Pandas :

pandas_df = pd.read_csv("file.csv")

PySpark

df = sqlContext.read.format('com.databricks.spark.csv').options(header='true', inferschema='true') \
.option("delimiter", ",").option("escape", '\\').option("escape", ':').\
option("parserLib", "univocity").option("multiLine", "true").load("file.csv")

编辑:

csv文件中可以有n个字段,这个数据跨度可以是任意字段。

最佳答案

def weird_gen(s):
s = [s]
while s:
*x, a = s[0].split(',', 2)
y, *s = a.split('\n', 1)
yield ', '.join(z.strip().replace('\n', ' ') for z in x + [y])

print('\n'.join(weird_gen(open('bad.csv').read())))

1, "asdsdsdsds", "John"
2, "dfdhifdkinf dfjdfgkdnjgknkdjgndkng dkfdkjfnjdnf", "Roy"
3, "dfjfdkgjfgn", "Rahul"

关于python - 从 CSV 文件的字符串列中删除新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48861331/

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