我需要帮助从文本文件中排序列表。我正在读一个.txt文件,然后添加一些数据,然后按人口变化%对其排序,最后,将其写入一个新的文本文件。你知道吗
现在唯一给我带来麻烦的是排序函数。我认为for语句语法给了我一些问题——我不确定在代码中的什么地方添加sort语句,以及如何将其应用于for循环语句的输出。你知道吗
我试图排序的总体更改数据是列表中的[1]项。你知道吗
#Read file into script
NCFile = open("C:\filelocation\NC2010.txt")
#Save a write file
PopulationChange =
open("C:\filelocation\Sorted_Population_Change_Output.txt", "w")
#Read everything into lines, except for first(header) row
lines = NCFile.readlines()[1:]
#Pull relevant data and create population change variable
for aLine in lines:
dataRow = aLine.split(",")
countyName = dataRow[1]
population2000 = float(dataRow[6])
population2010 = float(dataRow[8])
popChange = ((population2010-population2000)/population2000)*100
outputRow = countyName + ", %.2f" %popChange + "%\n"
PopulationChange.write(outputRow)
NCFile.close()
PopulationChange.close()
你可以通过一些小的改变来解决你的问题。在读入时拆分行,并在已排序的行上循环:
但是,如果这是一个csv,您可能需要查看^{} 模块。尤其是
DictReader
将根据标题行以字典列表的形式读入数据。我正在编下面的字段名,但你应该明白。您会注意到我在读入数据时根据'countryName'
对数据进行排序:这将为您提供一个2列csv
['countryName', 'popChange']
。您需要使用正确的字段名来更正此问题。你知道吗您需要先读取文件中的所有行,然后才能对其进行排序。我创建了一个名为
change
的列表来保存人口变化和国家名称的元组对。此列表将被排序并保存。你知道吗我使用了一个列表理解来生成输出行,输出行按照所需的顺序(即首先是国家名称)交换成对的数据。你知道吗
相关问题 更多 >
编程相关推荐