python处理Excel数据串行串列问题
接到一个任务,要获取药监局所有的进口药材,国产药材名录。写好爬虫,一共有十几万条的数据,爬下来一看,简直不忍直视。各种串列,有的在第一行,有的在第三行,有的第五行,没有任何规律可言。要想用Excel处理,难度很大啊,所以就写了python脚本来处理了。
思路是这样的:
1.用python读取整行的数据
2.把一整行的数据连成一个字符串
3.找出规律(比如表中每一行都有几个关键字,如药品本位码:这几个字),用re正则匹配找出来。
4.重新写入Excel就可以了。
下面的代码不是处理这个表格的代码,因为后来又做了其他的项目,规律不一样(这次是“[]”),所以改了代码了。不过思路是一样的。可以借鉴一下。
import xlrd import re file0=xlrd.open_workbook(r'C:\Users\Desktop\12.xlsx') table0=file0.sheet_by_name('yaojianjuqicai') nrows=table0.nrows nclos=table0.ncols for i in range(1,nrows): name=table0.row_values(i) print(i) str = ''.join('%s'%i for i in name)#连成一个字符串 #print(str) dd=re.findall(r'^\[(.*?)\]$',str,re.S) #dd=list(dd[0])#如果写入Excel的时候遇到tuple不可写入的报错,就用这个。 print(dd) for i in dd: out='{},'.format(i) with open('yjjqicainew.csv','a+')as f: f.write(out) with open('yjjqicainew.csv', 'a+')as f: f.write('\n')
看看处理之后的效果吧
总结经验:
其实以上问题在爬虫的时候,写好代码就可以避免了,我因为怕网站的数据不规范,所以爬下来才修改。
建议在爬的时候,加入一些符号,比如&号等,后面可以用Excel分列,十分方便。