gpt4 book ai didi

python - 如何解决读取 csv 的问题,该文件是分号分隔的文件,其中某些字符串包含分号?

转载 作者:太空宇宙 更新时间:2023-11-04 07:14:31 27 4
gpt4 key购买 nike

可以通过在我的 csv(分号分隔)文件中显示几个示例行来说明我遇到的问题,如下所示:

4;1;"COFFEE; COMPANY";4
3;2;SALVATION ARMY;4

请注意,在一行中,一个字符串用引号引起来并且其中有一个分号(在我的输入文件中,除了包含分号的列外,所有列都没有引号)。

这些带有引号和分号的行导致了问题——基本上,我的代码计算列/字段中引号内的分号。因此,当我读取这一行时,它会将字符串中的这个分号读取为分隔符,从而使该行看起来好像有一个额外的字段/列。

所需的输出如下所示,“coffee company”两边没有引号,“coffee”和“company”之间没有分号:

4;1;COFFEE COMPANY;4
3;2;SALVATION ARMY;4

实际上,这个带有“咖啡公司”的专栏对我来说完全没用,所以最终文件也可以是这样的:

4;1;xxxxxxxxxxx;4
3;2;xxxxxxxxxxx;4

我怎样才能去掉这一特定列中的分号,而不去掉所有其他分号?

最佳答案

csv 模块使得处理这样的情况相对容易:

# Contents of input_file.csv
# 4;1;"COFFEE; COMPANY";4
# 3;2;SALVATION ARMY;4

import csv
input_file = 'input_file.csv' # Contents as shown in your question.

with open(input_file, 'r', newline='') as inp:
for row in csv.reader(inp, delimiter=';'):
row[2] = row[2].replace(';', '') # Remove embedded ';' chars.
# If you don't care about what's in the column, use the following instead:
# row[2] = 'xyz' # Value not needed.
print(';'.join(row))

打印输出:

4;1;COFFEE COMPANY;4
3;2;SALVATION ARMY;4

后续问题:如何将此数据写入新的 csv 文件?

import csv
input_file = 'input_file.csv' # Contents as shown in your question.
output_file = 'output_file.csv'

with open(input_file, 'r', newline='') as inp, \
open(output_file, 'w', newline='') as outp:
writer= csv.writer(outp, delimiter=';')
for row in csv.reader(inp, delimiter=';'):
row[2] = row[2].replace(';', '') # Remove embedded ';' chars.
writer.writerow(row)

关于python - 如何解决读取 csv 的问题,该文件是分号分隔的文件,其中某些字符串包含分号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53093660/

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