[英]Edit a spreadsheet with Python(passing by CSV file)
我有一個包含以下字段的電子表格:
id age smoker do sport
1 35 yes rare
2 40 no frequently
3 20 no never
4 .. .. ..
我想創建一個Python腳本來編輯這個電子表格,通過csv文件轉換。
“是”變為1,“否”變為0,“罕見”變為0,“頻繁”變為1,“永遠”變為2。
我已將電子表格保存為csv文件,使用分隔符作為';' 和quotechar'“'。
現在我寫這段代碼:
import csv
filecsv=open("file.csv","r")
reader=csv.reader(filecsv, delimiter= ';' , quotechar=' " ')
out=open("outfile.csv","w")
output=csv.writer(out, delimiter= ';' , quotechar=' " ')
for row in reader:
for field in row:
if row[field]=='yes':
.
.
.
.
但我不知道如何繼續....
有人能告訴我如何使用python進行這些更改嗎?
使用Python列表或字典更好嗎?
謝謝大家!
盡管CSV文件看起來像電子表格,但它們的核心只是文本文件。 這意味着您實際上不需要使用csv庫,而是將其作為簡單字符串讀取。
將文件作為字符串后,可以使用正則表達式轉換相關值。 這是一個例子:
import re
o = open("output","w")
data = open("file").read()
o.write( re.sub("someword","newword",data) )
o.close()
請記住,對於要轉換的每個值,您將需要一個re.sub()
調用。
看看你如何了解Python的csv庫 ,對於輸入csv的每一行,創建一個包含所需更改的新行並將其寫入新的csv文件應該是微不足道的。
請注意csv閱讀器如何將每一行視為列表。 接下來,看一下csv writer的writerow()
方法; 它需要一個python列表並將其寫為csv行。 您需要做的就是一次讀取一行,進行所需的更改並將其吐回給作者。 使用你的代碼:
for row in reader: #for each row in the input
outrow = list(row) # make a copy of the row. I'm not sure if you NEED to do this, but it doesn't hurt.
if outrow[2] == "yes": #if the value in the 3rd column, "smoker", is "yes"
outrow[2] = 1 #change it to 1
elif outrow[2] == "no": #if it's "no"
outrow[2] = 0 #change it to 0.
#repeat this process for outrow[3] (meaning column #4, "do sport")
output.writerow(outrow)
您可能已經注意到python調用第3列2和第4列3這是因為python從0開始計數(因此第1列是第0列)。 您應該能夠按照此示例進行所需的所有更改。
完成后別忘了關閉文件!
如果您將始終擁有該格式,並且您希望逐行替換:
replacements_dict = {
'yes': 1,
'no' : 0,
'rare': 0,
'frequently': 1,
'never': 2
}
for row_list in reader:
output.writerow([
row_list[0],
row_list[1]
replacements_dict[row_list[2]],
replacements_dict[row_list[3]]
])
你也可以把你的csv作為一個字符串讀入內存,只需替換像georgesl的字樣
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.