python正则表达式
import re m=re.match("(\w+)","aaa,bbb,ccc") if m: print(m.group(1))
python遍历目录
import os files=os.listdir("../abc") for file in files: if os.path.isfile("../abc/"+file): ... # 文件处理 else: ... # 目录处理
python读取xml
采用sax流式读取
import xml.sax # 从xml.sax.ContentHandler派生类,用来处理xml回调 class XmlHandler(xml.sax.ContentHandler): # 构造函数 def __init__(self,fname): self.l=[] # 元素开始事件处理 def startElement(self,tag,attributes): # 利用list将tag保存为堆栈 self.l.append(tag) # 元素结束事件处理 def endElement(self,tag): assert(tag==self.l[-1]) self.l.pop(-1) # 内容事件处理 def characters(self, content): # 那么栈顶元素就是当前content所属节点 if self.l[-1]==...: ... elif ... parser=xml.sax.make_parser() handler=XmlHandler() parser.setContentHandler(handler) parser.parse("aaa.xml")
python读取xlsx
安装openpyxl
pip install openpyxl
from openpyxl import load_workbook from openpyxl.formula import Tokenizer wb=load_workbook("aaa.xlsx",read_only=True) ws=wb.active # 可以指定从第二行、第二列开始读取 for row in ws.iter_rows(min_row=2,min_col=2,values_only=False): for cell in row: # 单元格为数字,且不为空 if cell.data_type=='n' and cell.value!=None: ... # 单元格为字符串 elif cell.data_type=='s': ... # 单元格公式 elif cell.data_type=='f': # openpyxl不支持计算公式,但可以取出每个token自行处理 tok=Tokenizer(cell.value) print("\n".join("%12s%11s%9s" % (t.value, t.type, t.subtype) for t in tok.items))
参考:
https://openpyxl.readthedocs.io/en/stable/index.html
https://stackoverflow.com/questions/41688677/python-3-4-unable-to-read-value-from-excel-formula