簡體   English   中英

Python:在b列中為a列中的每個值打印值

[英]Python: printing value in column b for each value in column a

我是python的新手,並嘗試將其用於我的日常任務以精通它。 我希望能夠從csv文件中獲取值並像下面的示例一樣進行打印。 (我能夠從csv讀取並將輸出寫入文件。只需執行此操作即可。)

Name,Item
Andy,Ball
Tom,Car
Zack,Watch

輸出應為:

Andy has a Ball
Andy has a Car
Andy has a Watch
Tom has a Ball 
Tom has a Car ... etc.

*我的代碼。 當然,我編輯了實際的語句,可能沒有意義,但這就是代碼。 我確實創建了一個函數並使代碼更短。

import csv

with open('../CSV_Files/File.csv') as csvfile:
    reader = csv.DictReader(csvfile)
    f = open('../Output_Folder/File-1.txt' ,'w')
    for row in reader:
        f.write("Name is %s, network is %s\n" % (str(row['Name']), str(row['Network'])))
    f.close()

with open('../CSV_Files/File.csv') as csvfile:
    reader = csv.DictReader(csvfile)
    f = open('../Output_Folder/File.txt','a')    
    for row in reader:        
        f.write("\n\zone is %s\n" % str(row['Zone']))
    f.close()

print ('Done')

您的文件似乎不是csv文件。 csv文件具有分隔每列的定界符,如下所示:

Name,Item
Andy,Ball
Tom,Car
Zack,Watch

您的文件似乎是一個固定寬度的文件,特別是上一行中“ Car ”中的C與“ Ball ”中的B如何完美對齊。 是否使用制表符作為分隔符,而這些制表符已轉換為問題中的空格?

無論如何,如果它是一個csv文件,如我的示例中的逗號分隔:

with open('myfile.csv') as f:
    cf = csv.DictReader(f)
    for row in cf:
        print('{Name} has a {Item}'.format(**row))

如果用制表符分隔,請使用

cf = csv.DictReader(f, delimiter='\t')

現在,固定寬度會更難,因為您必須知道寬度,如下所示:

with open('myfile.csv') as f:
    for line in f:
        line = line.strip()
        name = line[:5]
        item = line[6:]
        print('{} has a {}'.format(name, item))

只是一個簡單的例子。 請注意,您必須設置定界符,並使用.readline()跳過第一行,因為您的文件似乎具有標題。

import csv

with open('C:\\file.csv', 'r') as csvfile:
    reader = csv.reader(csvfile, delimiter=',')
    csvfile.readline()
    for row in reader:
        print(str(row[0]) + ' has a ' + str(row[1]))

假設您使用的是python 3.7,什么輸出到同一目錄

import csv
myfile = open("output.txt", "w")
with open('yourfile.csv', newline='') as csvfile:
    spamreader = csv.reader(csvfile, delimiter=',')                           
    for row in spamreader:
        mystr = spamreader[i] + "has a "+ spamreader[i+1]
        myfile.write(mystr + "\n")
myfile.close()

如果將“ Name和“ Item讀入兩個列表(“ name和“ items ,則可以執行以下操作以獲取所需的輸出。

import itertools
name = ["Andy","Tom","Zack"]
items = ["Ball","Car","Watch"]
for i in itertools.product(name,items):
    print(i[0]+" has a "+i[1])

輸出:

Andy has a Ball
Andy has a Car
Andy has a Watch
Tom has a Ball
Tom has a Car
Tom has a Watch
Zack has a Ball
Zack has a Car
Zack has a Watch

itertools.product提供輸入可迭代項的笛卡爾積。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM