简体   繁体   English

将python字典的特定键值打印到CSV文件中

[英]Printing a particular key's value of a python dictionary into a CSV file

I have a dictionary as follows: 我有一本字典如下:

> {'Target_Table': 'scott  .  employees',
 'Target_Columns': 'empp_id  last_name  first_name  email  phone_number  JOB_DATE  job_id  salary  commission_pct  manager_id  department_id',
 'Source_Columns': 'emp_id    last_name    first_name    email    phone_number    JOB_DATE    job_id    salary    commission_pct    manager_id    department_id',
 'Source_Table': 'scott  .  employee',
 'where_expr': 'emp_id  =  old_emp_id'}

I have to print Target_Columns values each in a different row. 我必须在不同的行中打印Target_Columns值 So far they are all printing in one single row. 到目前为止,它们都是一行打印。 I know how to split words but I'm unable to perform it particularly on Target_Columns key's values . 我知道如何分割单词,但我无法在Target_Columns键的值上执行它。

> 'Target_Columns': 'empp_id  last_name  first_name  email  phone_number  JOB_DATE  job_id  salary  commission_pct  manager_id  department_id'

Expected output: 预期产量:

>     Target Columns

>        empp_id
       last_name 
       first_name
       email 
       phone_number 
       JOB_DATE  ...
with open("proc.txt", 'r') as file:   
    if re.search(r'select|SELECT', file.read()):
        selr = select_stmt.parseString(open('proc.txt').read());
        sd=selr.asDict()
        sdict={k: str(v).strip("[]").replace("'", "").replace(","," ").replace("["," ").replace("]"," ") for k, v in sd.items()}
        val=sdict.values()
        for key in sdict:
            if key=='Target_Columns':
                for value in re.findall(r'\S+', val):
                    print(value)

Then for CSV I have this: I have no idea how to integrate both 然后对于CSV我有这个:我不知道如何集成两者

with open('procfile.csv', 'w') as f: 
    fieldnames = ["Source_Table","Source_Columns","Target_Table","Target_Columns"]
    fieldnames = sorted(set(sd.keys()).union(*[sdict,idict]))
    writer = csv.DictWriter(f, fieldnames, extrasaction='ignore') 
    writer.writeheader()
    writer.writerow(sdict)

Assuming sdict is the dictionnary you mentionned at the beginning of your question: 假设sdict是您在问题开头提到的词典:

sdict = {'Target_Table': 'scott  .  employees',
         'Target_Columns': 'empp_id  last_name  first_name  email  phone_number  JOB_DATE  job_id  salary  commission_pct  manager_id  department_id',
        }

for key, val in sdict.items():
    if key == 'Target_Columns':
        print(key)
        print("\n".join(val.split()))

Below 下面

sdict = {'Target_Table': 'scott  .  employees',
         'Target_Columns': 'empp_id  last_name  first_name  email  phone_number  JOB_DATE  job_id  salary  commission_pct  manager_id  department_id',
         }

print('\n'.join(sdict['Target_Columns'].split('  ')))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM