python处理Excel数据串行串列问题

接到一个任务,要获取药监局所有的进口药材,国产药材名录。写好爬虫,一共有十几万条的数据,爬下来一看,简直不忍直视。各种串列,有的在第一行,有的在第三行,有的第五行,没有任何规律可言。要想用Excel处理,难度很大啊,所以就写了python脚本来处理了。

python处理Excel数据串行串列问题

思路是这样的:

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')

看看处理之后的效果吧

python处理Excel数据串行串列问题

总结经验:

其实以上问题在爬虫的时候,写好代码就可以避免了,我因为怕网站的数据不规范,所以爬下来才修改。

建议在爬的时候,加入一些符号,比如&号等,后面可以用Excel分列,十分方便。