-1

このプロジェクトは、「従業員名」と「月次売上データ」を含む外部.txtファイルからデータを抽出するために行っています。テキストファイルの形式(完全なファイル:「文字列」の後にfloatの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

'employee'は'lastname、first name'として保存されていることに注意してください。これを切り替えて、'、'を削除したいと思います。

どんな助けでも大歓迎です!dict()を使い始めたばかりですが、データの操作が難しい場合があります。

更新 主な問題は実際のフォーマットではありません。これが起こることです:私はデータを収集した後、「姓、名」をフォーマットしていました

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

これは機能しますが、結果は正確に次のように出力されます。

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

4 に答える 4

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

または

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

これを試して :

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