python脚本-csv文件处理、进制转换

it2026-03-02  4

文章目录

python脚本1、argparse参数2、文件读写1)最常用的一种方法,利用pandas包2)另一种方法用csv包,一行一行写入csv写入多列 3、取文件中关键字所在的行1) if search_word in line:2)正则表达式 4、十进制数转二进制5、数据位宽补全,如001,002……rjust() 方法zfill() 函数扩展资料:一、du整数的输出二、浮点数输出

python脚本

100天Python

1、argparse参数

参考

2、文件读写

[Python:文件的读取、创建、追加、删除、清空]([https://blog.csdn.net/qitong111/article/details/79676799?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allsobaiduenddefault-2-79676799.nonecase&utm_term=csv%E6%B8%85%E7%A9%BAcsv%20python&spm=1000.2123.3001.4430](https://blog.csdn.net/qitong111/article/details/79676799?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allsobaiduenddefault-2-79676799.nonecase&utm_term=csv清空csv python&spm=1000.2123.3001.4430))

csv文件读写

1)最常用的一种方法,利用pandas包

import pandas as pd import numpy as np #任意的多组列表 a = [1,2,3] b = [4,5,6] # ============ 写,创建csv ================ # 将DataFrame存储为csv,参数(可省):mode是模式,w为写,a为追加行,index表示是否显示行名default=True; #字典中的key值即为csv中列名 dataframe = pd.DataFrame({'a_name':a,'b_name':b}) dataframe.to_csv("test.csv",mode='',index=False,sep=',') # test.csv有的话保存,没有则创建 # 结果 a_name b_name 0 1 4 1 2 5 2 3 6 # ============ 读 ================ data = pd.read_csv('test.csv') print(data['a_name']) # 获取列名为 a_name 的数据 # test.csv要存在、且不能为空,否则就会报错 # ============ 追加 "列" ============= data = pd.read_csv(r'test.csv') data1 = [7,8,9] data['c_name'] = data1 #将新列的名字设置为 c_name data.to_csv(r"test.csv",index =False) #这里不要写mode='a',否则会按行追加,不能追加为列

注意

第一次写入csv的时候,可能 csv文件不存在,或为空,不能用 pd.read_csv(‘test.csv’),会报错

解决:先用以下方式创建 test.csv ,然后就可以用 pd.read_csv(‘test.csv’) 读取

data=d.DataFram({'a':[1,2,3]}) data.to_csv('test.csv',index=False)

已有的 csv 文件写入

示例代码

import pandas as pd import numpy as np # ============ 追加 "列" ============= data = pd.read_csv(r'test.csv') data1 = [7,8,9] data['c_name'] = data1 #将新列的名字设置为 c_name data.to_csv(r"test.csv",index =False) #这里不能写mode='a',否则会按行追加,不能追加为列

按列追加:即在原有的文件后面写入一列,data.to_csv() 中,不能写mode=‘a’,否则会按行追加

按行追加:data.to_csv() 中,设置 mode='a’

2)另一种方法用csv包,一行一行写入

import csv # ========== 读 ============ with open("test.csv","r") as csvfile: # 读取csv文件用reader reader = csv.reader(csvfile) for line in reader: #这里不需要readlines print line # ========== 写 ============= with open("test.csv","w") as csvfile: // 若不存在,会自动创建csv文件 writer = csv.writer(csvfile) #先写入columns_name writer.writerow(["index","a_name","b_name"]) #写入多行用writerows writer.writerows([[0,1,3],[1,2,3],[2,3,4]]) # 结果 index a_name b_name 0 1 3 1 2 3 2 3 4

或者

import csv // 下面方式不会自动创建 file.csv,需要先手动创建好,否则会报错 csv_file = open('file.csv','r+',newline='') csv_file.truncate() # 清空文件,要在写模式下才有用 writer = csv.writer(csv_file,dialect='excel') string = ['a','b','c'] writer.writerow(string) # 写一行

Python读csv:创建、追加、覆盖

csv写入多列

import csv import os def main(): current_dir = os.path.abspath('.') file_name = os.path.join(current_dir, "csss.csv") csvfile = open(file_name, 'wt' ,encoding="UTF8") # writer=csv.writer(csvfile, delimiter=",") header=['uel','title'] csvrow1=[] csvrow2=[] csvrow1.append("测试1") csvrow1.append("测试2") csvrow2.append("111") csvrow2.append("222") writer.writerow(header) writer.writerows(zip(csvrow1,csvrow2)) csvfile.close() if __name__ == '__main__': main()

3、取文件中关键字所在的行

1) if search_word in line:

f = open('file.txt','r') lines = f.readlines() match_string = ['abc','cde','fgh'] for line in lines: for word in match_string: if word in line: print(line)

2)正则表达式

4、十进制数转二进制

def d2b(num, dataWidth, fracBits): # funtion for converting into two's complement format if num >= 0: num = num * (2 ** fracBits) num = int(num) e = bin(num)[2:] e = e.rjust(9,'0') else: num = -num num = num * (2 ** fracBits) # number of fractional bits num = int(num) if num == 0: d = 0 else: d = 2 ** dataWidth - num e = bin(d)[2:] e = e.rjust(8,'0') # 将数据补足为8bits return e

也可参考:Python将十进制数据转换为指定位宽的二进制字符串的方法

5、数据位宽补全,如001,002……

rjust() 方法

**作用:**返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串

#!/usr/bin/env python3 #-*- coding:utf-8 -*- for i in range(1,30): print (str(i).rjust(2,'0')) # 01,02,03....

zfill() 函数

#!/usr/bin/python for i in range(1,20): n=str(i) s = n.zfill(3) print s 或者:bai for i in range(1,20): m = "%03d" % i print m

扩展资料:

Python格式化输出bai

一、du整数的输出

1、%o —— oct 八进zhi制

2、%d —— dec 十进dao制

3、%x —— hex 十六进zhuan制

print('%o' % 20) 24 print('%d' % 20) 20 print('%x' % 20) 14

二、浮点数输出

1、格式化输出

%f ——保留小数点后面六位有效数字

%.3f,保留3位小数位

%e ——保留小数点后面六位有效数字,指数形式输出

%.3e,保留3位小数位,使用科学计数法

%g ——在保证六位有效数字的前提下,使用小数方式,否则使用科学计数法

%.3g,保留3位有效数字,使用小数或科学计数法

2、字符串输出

%s

%10s——右对齐,占位符10位

%-10s——左对齐,占位符10位

%.2s——截取2位字符串

%10.2s——10位占位符,截取两位字符串

最新回复(0)