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 - 基于 raw_input 的 read_csv 数据框中的列位置的变量替换

python - 如何使用 gliderlabs/alpine :3. 3 在 Dockerfile 中设置时区

python - Django:列出模型的所有反向关系

python - 根据 pandas 中的日期范围创建 FY

将 .CSV 文件转换为 .XML 的 PHP 脚本

Python 3.4 将列表写入 csv

python - django csrf_token 不打印隐藏的输入字段

在 vscode 中找不到 python 调试适配器 - WSL :Ubuntu

python - 如何在一个脚本中从两个网站进行网络抓取?

python - 大文件读取问题