如何避免在引号内的分隔符拆分?

2 投票
2 回答
1910 浏览
提问于 2025-04-16 15:07

我在处理数据时遇到了问题。我有一个CSV文件,里面的数据是这样的:

"a";"b";"c;d";"e"

问题是,当我使用 line.split(";") 这个函数时,它会把 cd 也分开。我不想让 cd 被分开。之后我需要把这四个值存储到表格的四列中,但用这个函数我得到了五列。

我希望结果是 "a" "b" "cd" "e"

我试过用 line.split('";"'),但是没有效果。

2 个回答

0

在其他情况下,可以使用 shlex.split() 这个函数。

12
import csv
reader = csv.reader(open("yourfile.csv", "rb"), delimiter=';')
for row in reader:
    print row

试试这个。

import csv
reader = csv.reader(open("yourfile.csv", "rb"), delimiter=';', quoting=csv.QUOTE_NONE )
for row in reader:
    print row

这个 ^^^ 如果你想保留引号的话

编辑:如果你想把字段内容中的 ';' 去掉(比如 'c;d' 变成 'cd'),你可以对返回的行进行后处理,像这样:

import csv
reader = csv.reader(open("yourfile.csv", "rb"), delimiter=';', quoting=csv.QUOTE_NONE )
for row in reader:
    print [item.replace(';', '') for item in row]   

撰写回答