python寫入csv空一行
① python中通過csv的writerow輸出的內容有多餘的空行
Python中通過csv的writerow輸出的內容有多餘的空行
main(){
int i=1;
while(i<=5)
printf("%d\n",SQ(i++));
}
SQ(int y)
{
return((y)*(y));
}
【例9.10】
#define SQ(y) ((y)*(y))
main(){
int i=1;
while(i<=5)
printf("%d\n",SQ(i++));
}
在例9.9中函數名為SQ,形參為Y,函數體表達式為((y)*(y))。在例9.10中宏名為SQ,形參也為y,字元串表達式為(y)*(y))。 例9.9的函數調用為SQ(i++),例9.10的宏調用為SQ(i++),實參也是相同的。從輸出結果來看,卻大不相同。
分析如下:在例9.9中,函數調用是把實參i值傳給形參y後自增1。 然後輸出函數值。因而要循環5次。輸出1~5的平方值。而在例9.10中宏調用時,只作代換。SQ(i++)被代換為((i++)*(i++))。在第一次循環時,由於i等於1,其計算過程為:表達式中前一個i初值為1,然後i自增1變為2,因此表達式中第2個i初值為2,兩相乘的結果也為2,然後i值再自增1,得3。在第二次循環時,i值已有初值為3,因此表達式中前一個i為3,後一個i為4,乘積為12,然後i再自增1變為5。進入第三次循環,由於i 值已為5,所以這將是最後一次循環。計算表達式的值為5*6等於30。i值再自增1變為6,不再滿足循環條件,停止循環。
從以上分析可以看出函數調用和宏調用二者在形式上相似,在本質上是完全不同的。
② 使用python怎樣在csv文件中插入一行或刪除指定行
刪除指定行:
比如名為a的數據表中的數據:
index A B C
0 1 3 5
1 2 4 6
2 7 8 9
刪除第3列(索引為2的列):
a.drop(2)
插入的方法,用insert,或append:這個頁面的前三分之一處有添加行數據的方法,注意添加的新數據的格式跟原表格的格式要匹配起來。
③ python—CSV的讀寫
1.寫入csv數據
import csv
header=['class','name','sex','height','year']
rows=[
[1,'xiaoming','male',168,23],
[1,'xiaohong','female',162,22],
[2,'xiaozhang','female',158,21],
[2,'xiaoli','male',158,21]
]
with open('csvdir.csv','w',newline='')as f: #newline=" "是為了避免寫入之後有空行
ff=csv.writer(f)
ff.writerow(header)
ff.writerows(rows)
2.在寫入字典序列類型數據的時候,需要傳入兩個參數,一個是文件對象——f,一個是欄位名稱——fieldnames,到時候要寫入表頭的時候,只需要調用writerheader方法,寫入一行字典系列數據調用writerrow方法,並傳入相應字典參數,寫入多行調用writerows
import csv
headers = ['class','name','sex','height','year']
rows = [
{'class':1,'name':'xiaoming','sex':'male','height':168,'year':23},
{'class':1,'name':'xiaohong','sex':'female','height':162,'year':22},
{'class':2,'name':'xiaozhang','sex':'female','height':163,'year':21},
{'class':2,'name':'xiaoli','sex':'male','height':158,'year':21},
]
with open('test2.csv','w',newline='')as f:
f_csv = csv.DictWriter(f,headers)
f_csv.writeheader()
f_csv.writerows(rows)
注意:列表和字典形式的數據寫入是不一樣的!!!!!!
3.csv的讀取,和讀取文件差不多:
import csv
with open('test.csv')as f:
f_csv = csv.reader(f)
for row in f_csv:
print(row)
④ Python如何讀取有空行的csv文件的行數
python中有一個讀寫csv文件的包,直接import csv即可。