Saya memiliki file dengan nama lengkap pekerja, tanggal lahir, gaji dll. Sebagai contoh, ini adalah file teks saya:

John Snow 1967 CEO 3400$ 
Adam Brown 1954 engineer 1200$

Saya perlu menyimpan data ini dalam daftar terpisah untuk mengurutkan/mengedit/mengubah/menghapus. Apa yang telah aku lakukan:

userFile = input('Please, enter file name, that you want to open! \n') + '.txt'
workersData = [line.strip() for line in open(userFile, 'r')]

Saya memiliki output berikut:

['John Snow 1967 CEO 3400$', 'Adam Brown 1954 engineer 1200$']

Saya ingin membuat sesuatu seperti ini:

worker1 = ['John Snow', '1967', 'CEO', '3400$']
worker2 = [ 'Adam Brown', '1954', 'engineer', '1200$']
workern = ....

Atau cukup panggil data terpisah seperti:

name.worker1 = 'John Snow'
salary.worker2 = '1200'
....

Saya hanya bertanya apakah ini mungkin dengan Python dan bagaimana membuatnya dengan benar

2
Yura 10 Maret 2017, 12:17

2 jawaban

Jawaban Terbaik

Anda dapat menggunakan kamus:

Catatan: Saya sengaja tidak menyimpan workers job, workers year of birth dan workers salary sebagai tugas untuk Anda

import os

file_path = input("Please, enter the path to the file: ")
if os.path.exists(file_path):
    worker_dict = {}
    k = 1
    for line in open(file_path,'r'):
        split_line = line.split()
        worker = "worker%d" % k
        worker_name = "%s_%s" % (worker, "name")
        worker_yob = "%s_%s" % (worker, "yob") #yob stands for year of birth
        worker_job = "%s_%s" % (worker, "job")
        worker_salary = "%s_%s" % (worker, "salary")
        worker_dict[worker_name] = ' '.join(split_line[0:2])
        # TODO: worker_dict[worker_job] = ...
        # TODO: worker_dict[worker_yob] = ...
        # TODO: worker_dict[worker_salary] = ...
        k += 1
    print(worker_dict)
else:
    print("Error: Invalid file path")

Output (workers_dict hanya menyimpan nama pekerja pada saat ini):

Please, enter the path to the file: data.txt
{'worker1_name': 'John Snow', 'worker2_name': 'Adam Brown'}
1
Sash Sinha 10 Maret 2017, 10:01

Ini akan melakukan pekerjaan Anda

data = ['John Snow 1967 CEO 3400$', 'Adam Brown 1954 engineer 1200$']
all_workers = []
temp = []
for item in data:
    temp = item.split(" ")
    worker = []
    worker.append(temp[0] + " " + temp[1])
    worker.append(temp[2])
    worker.append(temp[3])
    worker.append(temp[4])
    all_workers.append(worker)
print all_workers

Keluaran:

[['John Snow', '1967', 'CEO', '3400$'], ['Adam Brown', '1954', 'engineer', '1200$']]

1
SHAHS 10 Maret 2017, 10:06