-1

我正在做这个项目来从包含“员工姓名”和“每月销售数据”的外部 .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)
4

4 回答 4

0

问题是您在每个名称的末尾保留换行符,因此(例如)“姓氏,名字\ n”而不是“姓氏,名字”。您的格式化行很好,您只需要修改 data_key 设置为的行:

data_key = f.readline().strip()

data_key = line.strip()

不要以 结尾print employee,而是使用您已经提出的行​​:

print ' '.join(employee.split(',')[::-1]).strip()

于 2012-12-02T16:39:43.550 回答
0

尝试这个 :

print (' '.join((employee.split(',')[::-1])).strip())
于 2012-12-02T16:30:21.207 回答
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
于 2012-12-02T16:13:04.297 回答
0
print ' '.join(employee.split(',')[::-1]).strip()

或者

print "{0[1]} {0[0]}".format(employee.split(',')).strip()
于 2012-12-02T16:00:45.400 回答