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

Python csv阅读-如何仅向字符串添加引号,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),美国广播公司,7.05,13.10 使用csv在python中读取时。reader以以下格式读取行- ['1', 'XYZ (A)', 'ABC', '7.05

在使用python csv库读取
csv
时,它会向所有值添加单引号

下面是读取csv的代码-

with open(csvfile, 'rb') as data:
    reader = csv.reader(data)
    for row in reader:
        print row
CSV文件内容-

1,XYZ(A),美国广播公司,7.05,13.10

使用csv在python中读取时。reader以以下格式读取行-

['1', 'XYZ (A)', 'ABC', '7.05', '13.10']
预期产量-

[1, 'XYZ (A)', 'ABC', 7.05, 13.10]
我试过使用,但没有运气

我正在考虑的另一个选项是,通过对csv.reader(文件)


有什么建议吗

您可以这样做:

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]
使用正确的格式

编辑

要绕过被转换为浮点数的整数,请执行以下操作:

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']

第一列是整数,使用这种方法将添加小数点。另外,你认为除了尝试之外的方法会对性能造成影响吗?会有轻微的性能影响,是的。要绕过与int对应的浮点值,您可以在强制转换之前检查字符串值,查看它是否包含句点,并适当地强制转换。查看数据时,您会始终知道第一列是and integer,最后两列是浮点值吗?否。逻辑必须足够通用,以支持后面的integer。