在使用 python csv 库读取 csv
时,它会为所有值添加单引号。
这是读取 csv 的代码 -
with open(csvfile, 'rb') as data:
reader = csv.reader(data)
for row in reader:
print row
CSV 文件内容 -
1,XYZ (A),ABC,7.05,13.10
在使用 csv.reader 读取 python 时,读取以下格式的行 -
['1', 'XYZ (A)', 'ABC', '7.05', '13.10']
预期输出-
[1, 'XYZ (A)', 'ABC', 7.05, 13.10]
我尝试使用 quoting format ,但没有运气。
我正在考虑的另一个选项是通过单独迭代 csv.reader(file)
有什么建议吗?
最佳答案
你可以这样做:
with open(csvfile, 'rb') as data:
reader = csv.reader(data)
for row in reader:
print row
temp = []
for r in row:
try:
temp.append(float(r))
except ValueError:
temp.append(r)
print temp
给出以下输出:
['1', 'XYZ (A)', 'ABC', '7.05', '13.10']
[1.0, 'XYZ (A)', 'ABC', 7.05, 13.1]
temp 是正确的格式
编辑
绕过将 int 转换为 float 的方法:
with open(csvfile, 'rb') as data:
reader = csv.reader(data)
for row in reader:
print row
temp = []
for r in row:
try:
if "." in row:
temp.append(float(r))
else:
temp.append(int(r))
except ValueError:
temp.append(r)
print temp
给出新的输出:
['1', 'XYZ (A)', 'ABC', '7.05', '13.10']
[1, 'XYZ (A)', 'ABC', '7.05', '13.10']
关于Python csv 阅读 - 如何仅向字符串添加引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22872007/