Python 如何使用带引号的字符串解析csv-高级案例
我试图让csv模块解析包含带引号的字符串和带引号的分隔符的行。不幸的是,我无法使用任何方言/格式参数实现期望的结果。有什么方法可以解析这个:Python 如何使用带引号的字符串解析csv-高级案例,python,python-3.x,csv,Python,Python 3.x,Csv,我试图让csv模块解析包含带引号的字符串和带引号的分隔符的行。不幸的是,我无法使用任何方言/格式参数实现期望的结果。有什么方法可以解析这个: '"AAA", BBB, "CCC, CCC"' 得到这个: ['"AAA"', 'BBB', '"CCC, CCC"'] # 3 elements, one quoted separator ? 两个基本要求: 必须保留引文 引号分隔符和非转义分隔符必须作为常规字符复制 有可能吗?有两个问题需要解决: 逗号分隔符周围的空格:skipiniti
'"AAA", BBB, "CCC, CCC"'
得到这个:
['"AAA"', 'BBB', '"CCC, CCC"'] # 3 elements, one quoted separator
?
两个基本要求:
有可能吗?有两个问题需要解决:
- 逗号分隔符周围的空格:
执行此操作(另请参见)skipinitialspace=True
- 阅读时保留引号:用三倍引号替换引号可以保留引号
import csv
data = ['"AAA", BBB, "CCC, CCC"'.replace('"','"""')]
cr = csv.reader(data,skipinitialspace=True)
row = next(cr)
print(row)
结果:
['"AAA"', 'BBB', '"CCC, CCC"']
以文件作为输入:
import csv
with open("input.csv") as f:
cr = csv.reader((l.replace('"','"""' for l in f),skipinitialspace=True)
for row in cr:
print(row)
你试过这个吗
import csv
with open('file.csv') as csvfile:
reader = csv.reader(csvfile, delimiter=',', quotechar='"')
for row in reader:
print row