如果我只是向您展示我正在使用的文本文件和我拥有的代码,那么这将更容易理解。这是文本文件,名为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 :(得分:4)
无论您使用readline()
阅读的任何地方,请使用readline().strip()
答案 1 :(得分:1)
.strip()
会删除所有空格/制表符/换行符
答案 2 :(得分: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'}]
答案 3 :(得分:0)
将.rstrip('\n')
附加到您的readline
来电,以清理换行符。