如何在阅读CSV文件时将字符串值转换为整数值?

slsn1g29  于 2022-12-06  发布在  其他
关注(0)|答案(4)|浏览(289)

打开CSV文件时,整数列被转换为字符串值(“1”、“23”等)。循环将这些值转换回整数的最佳方法是什么?

import csv

with open('C:/Python27/testweight.csv', 'rb') as f:
    reader = csv.reader(f)
    rows = [row for row in reader if row[1] > 's']

for row in rows:
    print row

CSV文件如下:

Account Value
ABC      6
DEF      3
GHI      4
JKL      7
n3h0vuf2

n3h0vuf21#

我想这是你想要的:

import csv

with open('C:/Python27/testweight.csv', 'r', newline='') as f:
    reader = csv.reader(f, delimiter='\t')
    header = next(reader)
    rows = [header] + [[row[0], int(row[1])] for row in reader if row]

for row in rows:
    print(row)

输出量:

['Account', 'Value']
['ABC', 6]
['DEF', 3]
['GHI', 4]
['JKL', 7]
vhipe2zx

vhipe2zx2#

如果CSV有标题,我建议使用csv.DictReader

with open('C:/Python27/testweight.csv', 'rb') as f:
    reader = csv.DictReader(f)
    for row in reader:
        integer = int(row['Name of Column'])
mzmfm0qo

mzmfm0qo3#

您可以按如下方式迭代所有行:

import csv

with open('testweight.csv', newline='') as f:
    rows = list(csv.reader(f))      # Read all rows into a list

for row in rows[1:]:    # Skip the header row and convert first values to integers
    row[1] = int(row[1])

print(rows)

这将显示:

[['Account', 'Value'], ['ABC', 6], ['DEF', 3], ['GHI', 4], ['JKL', 7]]

注意:你的代码正在检查> 's'。这将导致你没有得到任何行,因为数字将被视为小于s。如果你仍然使用Python 2.x,将newline=''改为'rb'

bd1hkmkf

bd1hkmkf4#

count = 0 #用于跳过第一行,标题列
使用open(sys.argv[1],“r”)作为t:reader = csv.reader(t)#普通读取器函数

for row in reader:
        if count > 0:
            teams.append({
                "key_one": row[0],
                "key_two": int(row[1]) #Convert the Value here
            })
        count += 1

相关问题