2012-12-02 194 views
-1

我正在執行此項目以從包含'員工姓名'和'每月銷售數據'的外部.txt文件中提取數據。文本文件格式(完整的文件:是「字符串」,然後花車的12個實例)格式化姓氏,名字

last name, first name 
45 
23 
34 
.... 
last name2, first name2 
78 
32 
23 
.... 

我的程序已接近完成,但我需要的「姓,名」的格式爲「第一姓名,姓氏「,同時打印結果。這是該部分的代碼,以便您獲得更好的想法。我使用「字典()」和.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(),有時候我發現操作數據很困難。

UPDATE 主要問題不是實際的格式。這是發生了什麼: 我用後收集數據,格式化「姓,名」

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

這項工作,但結果是印刷正是這種方式:

Shelly (first name) 
Adams (last name -also notice the blank space before Adams) 

回答

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

或者

print "{0[1]} {0[0]}".format(employee.split(',')).strip() 
+0

這將打印r結果爲: '名字'和另一行'姓氏' 任何方式使他們在同一行? – mmmaceo

+0

你確定嗎? 「僱員」究竟是什麼? –

+0

是的,格式化'員工'(Adams,Shelly)會給我一行輸出:'Shelly',另一行'Adams'(開頭空白)。我不知道爲什麼會發生這種情況。也許數據存儲在該變量中的方式 – mmmaceo

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 
0

試試這個:

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

同樣的道理,它會在不同的行中劃分名字和姓氏,它做我想做的事,很簡單,但格式化輸出是我無法去工作 – mmmaceo

0

的問題是,你保持在每名末尾的換行,所以你必須(例如)「姓,名\ n」,而不是「姓氏, 名字」。您格式化行是好的,你只需要修改的地方行被data_key設置爲:

data_key = f.readline().strip()

data_key = line.strip()

而是與print employee結束的,使用行,你會已經拿出:

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

+0

您的建議是有道理的,但仍然通過修改這些行輸出(仍然在同一行)沒有重新格式化爲'名字'後面跟'姓氏' – mmmaceo