我正在执行此项目以从包含“员工姓名”和“月度销售数据”的外部.txt文件中提取数据。文本文件的格式(完整文件:'string'后跟12个浮点数实例)
last name, first name
45
23
34
....
last name2, first name2
78
32
23
....
我的程序已接近完成,但我需要在打印结果时将'姓氏,名字'格式化为'名字,姓氏'。以下是该部分的代码,以便您获得更好的主意。我正在使用'dict()'和.iteritems()来浏览7名员工以及他们在原始文件中的12个月销售情况:
data = {} # dict: list of all values for person by person name
with open("SalesData.txt", "rt") as f:
data_key = f.readline() # We remember first line (first man)
data[data_key] = [] # empty list of values
for line in f:
# then we suppose every line is float.
try:
# convert to float
value = float(line.strip())
# add to data
data[data_key].append(value)
# If it does not convert, then it is next person
except ValueError:
# next person's name
data_key = line
# new list
data[data_key] = []
for employee, stats in data.iteritems():
print employee
请注意'员工'存储为'姓氏,名字',我想切换它并摆脱','。
任何帮助将不胜感激!我刚刚开始使用dict(),有时我发现很难操纵数据。
更新 主要问题不是实际的格式。这是发生的事情: 我以前收集数据后,格式化'姓氏,名字'
print ' '.join(employee.split(',')[::-1]).strip()
这项工作,但结果以这种方式打印:
Shelly (first name)
Adams (last name -also notice the blank space before Adams)
答案 0 :(得分:0)
print ' '.join(employee.split(',')[::-1]).strip()
或者
print "{0[1]} {0[0]}".format(employee.split(',')).strip()
答案 1 :(得分:0)
employees = {}
with open('path/to/file') as infile:
lname, fname = infile.readline.strip().split(', ')
stats = [float(infile.readline().strip()) for _ in range(12)]
employees["%s %s" %(fname.strip(), lname.strip())] = stats
for employee in employees:
print employee
答案 2 :(得分:0)
试试这个:
print (' '.join((employee.split(',')[::-1])).strip())
答案 3 :(得分:0)
问题是你在每个名字的末尾都保留换行符,所以你有(例如)“姓氏,名字\ n”而不是“姓氏,名字”。您的格式化行很好,您只需要修改data_key设置为的行:
data_key = f.readline().strip()
和
data_key = line.strip()
不要以print employee
结尾,而是使用您已经提出的那一行:
print ' '.join(employee.split(',')[::-1]).strip()