2013-03-15 52 views
0

如果我只是向您展示我正在使用的文本文件和我拥有的代码,这将更容易理解。这里的文本文件,名为employees.txt:将文本文件读入字典删除标题/尾随换行

7 
John 
Doe 
33 
272838 
M 
Mary 
Johnson 
38 
3849383 
..... 

现在我有两个功能。在这里,他们是:

def employee_write(file): 
    employee_dict = {} 
    employee_dict["First"] = file.readline() 
    employee_dict["Last"] = file.readline() 
    employee_dict["Experience"] = file.readline() 
    employee_dict["ID"] = file.readline() 
    employee_dict["Gender"] = file.readline() 
    return employee_dict 

def main(): 
    file = open("employees.txt", "r") 
    n = int(file.readline()) 
    x1 = employee_write(file) 
    employee_list = [] 
    for i in range(n): 
     employee_list.append(x1) 
     x2 = employee_list 
    print(x2) 

不幸的是,当我打印出来词典列表,我附着在第一功能键的值都拿出一个换行符连接,像这样:

[{'ID': '272838\n', 'Last': 'Doe\n', 'First': 'John\n', 'Experience': '33\n', 'Gender': 'M\n'}, {'ID': '272838\n', 'Last': 'Doe\n', 'First': 'John\n', 'Experience': '33\n', 'Gender': 'M\n'}, {'ID': '272838\n', 'Last': 'Doe\n', 'First': 'John\n', 'Experience': '33\n', 'Gender': 'M\n'}, {'ID': '272838\n', 'Last': 'Doe\n', 'First': 'John\n', 'Experience': '33\n', 'Gender': 'M\n'}, {'ID': '272838\n', 'Last': 'Doe\n', 'First': 'John\n', 'Experience': '33\n', 'Gender': 'M\n'}, {'ID': '272838\n', 'Last': 'Doe\n', 'First': 'John\n', 'Experience': '33\n', 'Gender': 'M\n'}, {'ID': '272838\n', 'Last': 'Doe\n', 'First': 'John\n', 'Experience': '33\n', 'Gender': 'M\n'}] 

我该如何解决这个问题?

+0

如果你对答案感到满意,请接受,以便我们继续前进。 – GodMan 2013-03-15 19:50:12

回答

4

徘徊无论你读使用readline(),使用readline().strip()

0

追加.rstrip('\n')readline调用消毒换行了行。

1

.strip()不带参数的剥离所有的空格/制表符/换行符

1

[社区维基,因为这实在是一个长注释]

(1)我会打电话给你的函数employee_read而不是employee_write

(2)不是所有的重复,我可能会做:

def employee_read(source): 
    keys = "First Last Experience ID Gender".split() 
    employee_dict = {key: next(source).strip() for key in keys} 
    return employee_dict 

(3)你的主要功能可以改为书面

def main(): 
    with open("employees.txt") as fp: 
     n = int(next(fp)) 
     employees = [employee_read(fp) for i in range(n)] 
    print employees 

这给

>>> main() 
[{'Gender': 'M', 'Last': 'Doe', 'ID': '272838', 'Experience': '33', 'First': 'John'}, 
{'Gender': 'F', 'Last': 'Johnson', 'ID': '3849383', 'Experience': '38', 'First': 'Mary'}] 
+0

因为在这里有很多甜蜜的代码,所以投了票!在我进一步了解next()的途中,感谢分享! – andsoa 2013-03-15 20:11:16