Python-如何将包含数字数据的CSV列转换为整数

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

我在一个项目中使用Python,并且在一个.txt文件中有数据,例如这样设置

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语句将在该进程终止后关闭文件!