Python-如何将包含数字数据的CSV列转换为整数
我在一个项目中使用Python,并且在一个.txt文件中有数据,例如这样设置Python-如何将包含数字数据的CSV列转换为整数,python,csv,Python,Csv,我在一个项目中使用Python,并且在一个.txt文件中有数据,例如这样设置 Brazil.800000 United Kingdom.1200000 Zimbabwe.5000 第一列是国家,第二列是数字数据。它们之间有一个周期。我的任务是对数据进行数字排序。我已经设法取得了一些进展,使用下面的代码从一个教程视频我发现 import csv import operator inputFileName = ("worldpop(2).txt") infile = open(inputFile
Brazil.800000
United Kingdom.1200000
Zimbabwe.5000
第一列是国家,第二列是数字数据。它们之间有一个周期。我的任务是对数据进行数字排序。我已经设法取得了一些进展,使用下面的代码从一个教程视频我发现
import csv
import operator
inputFileName = ("worldpop(2).txt")
infile = open(inputFileName, "r")
csv1 = csv.reader(infile, delimiter = ".")
sort = sorted(csv1, key = operator.itemgetter(1))
for eachline in sort:
print(eachline)
然而,虽然它按第二列对数据进行排序,但它将数字数据视为字符串而不是整数。这意味着结果是:
United Kingdom.1200000
Zimbabwe.5000
Brazil.800000
我完全被困在如何让这个程序将第二列视为实际整数的问题上。你们能帮忙吗
非常感谢
编辑:澄清一下,我并没有试图更改实际的文件,而只是以排序方式将数据打印为空闲。将sort语句中的键函数替换为将值转换为整数的函数
sort = sorted(csv1, key = lambda x: int(x[1]))
您需要将数字转换为int,以便将键更改为:
key=lambda x:int(x[1])
另外,作为一种更具python风格的方式,使用*打开文件,而不是在不关闭的情况下打开文件!具有正确键的排序函数,该键根据整数对行进行排序:
>>> import csv
>>> from operator import itemgetter
>>> with open('infile.txt', 'r') as csvfile:
... spamreader = csv.reader(csvfile, delimiter='.')
... for row in sorted((i for i in spamreader),key=lambda x:int(x[1])):
print row
结果:
['Zimbabwe', '5000']
['Brazil', '800000']
['United Kingdom', '1200000']
您还可以在排序函数中使用reverse=True arg来获得降序结果:
['United Kingdom', '1200000']
['Brazil', '800000']
['Zimbabwe', '5000']
*with语句将在该进程终止后关闭文件!