[英]reading a file and parse them into section
好的,所以我有一个包含ID号的文件,其名称后面跟着这样的名称:
10亚历克斯·德·苏扎
11罗宾·范佩西
9种类似
我需要阅读此文件,并将每条记录分成2个字段,分别是ID和名称。 我需要将条目存储在字典中,其中ID是键,名称是卫星数据。 然后,我需要在2列中每行输出一个条目,字典中的所有条目都按ID(以数字方式)排序。 dict.keys和list.sort可能会有所帮助(我想)。 最后,输入文件名必须是第一个命令行参数。
谢谢你的帮助!
到目前为止,我已经做到了,但是不能再进一步了。
fin = open("ids","r") #Read the file
for line in fin: #Split lines
string = str.split()
if len(string) > 1: #Seperate names and grades
id = map(int, string[0]
name = string[1:]
print(id, name) #Print results
我们需要sys.argv来获取命令行参数(注意,脚本的名称始终是返回列表的第0个元素)。
现在,我们打开文件(没有错误处理,应该添加该文件)并逐行读取。 现在,“行”列表中的每一行都有“ number firstname secondname”字符串。
然后打开一个空字典,并逐行循环遍历各个字符串,将每个空格分开,并将它们存储在临时变量tmp(现在是字符串列表:('number','firstname','secondname')中) 。 接下来,我们只填充字典,使用数字作为键,并使用空格连接的其余名称作为值。
要打印已排序的字典,只需使用key = int选项进行数字排序即可循环遍历sorted(out)返回的数字列表。 然后通过使用ID的字符串表示形式调用字典来打印ID(数字)和相应的值。
import sys
try:
infile = sys.argv[1]
except IndexError:
infile = input('Enter file name: ')
with open(infile, 'r') as file:
lines = file.readlines()
out = {}
for fullstr in lines:
tmp = fullstr.split()
out[tmp[0]] = ' '.join(tmp[1:])
for id in sorted(out, key=int):
print id, out[str(id)]
这适用于带ASCII字符串的python 2.7。 我非常确定它也应该能够处理其他编码(至少是德国Umlaute可以工作),但是我无法对其进行进一步的测试。 如果输入文件的格式有所不同,您可能还想添加很多错误处理。
只是一个建议,此代码可能比发布的其他代码更简单:
import sys
with open(sys.argv[1], "r") as handle:
lines = handle.readlines()
data = dict([i.strip().split(' ', 1) for i in lines])
for idx in sorted(data, key=int):
print idx, data[idx]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.