2013-03-15 45 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