Python csv 阅读 - 如何仅向字符串添加引号

标签 python csv

在使用 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/

相关文章:

python - 如何使用多个搜索条件和打印行搜索 CSV 文件?

python - 如何将值设置为 bool 过滤数据框列的行

python - 如何通过在Python中的某些列上应用条件来过滤csv数据

python - 使用 sphinx 记录 flask 应用程序

csv - 删除多列

r - data.table::fread 中的 dec 参数

java - 在 Android 应用程序中读取 CSV 文件

Python 将数据发布到 url

python - 绘制 pandas 列的直方图

excel - 如何将 .xlsx 文件转换为 .CSV 文件,维护可点击的链接