以下是全世界各个地方的地址,我们可以粗略看出,非常的不规范,中英文混杂,有拼音有汉字,大小写组合,等等,3万多条数据,像极了平时审核的数据,今天我们的目标就是从中挑出中国的地方。
接下来,我们就可以用Python进行筛选。
第一部分:方法介绍
先给大家介绍find()语句。
find()方法查找指定值的首次出现。如果找不到该值,则 find() 方法返回 -1。
a = 'abCDef'a.find('e')a.find('g')
参数说明:
string.find(value, start, end)
1、value:要检索的值;
2、start:开始检索的位置。默认是 0;
3、end:结束检索的位置。默认是字符串的结尾。
a.find('d')
必须输入大写的“D”方可查询
a.find('D')
因此,这个方法不适合在不规范的数据中进行查找。
第二个方法就是给大家介绍正则表达式,一般我们对它的使用常常出现在网络爬虫中,去提取所需要的信息。
今天我们所用到的就是re.findall(),我先用一个简单的例子给大家做个说明:
import rere.findall("python", "I like Python", flags = re.IGNORECASE)
参数说明:
findall (pattern, string [, flags])
1、pattern:正则表达式;
2、string:需要处理的字符串;
3、flags:说明匹配模式,例如不区分大小写re.I,详细匹配模式说明见下表:
标志 | 描述 |
A或ASCII | 执行仅8位ASCII字符匹配(仅适用python3) |
I或IGNORECASE | 执行不区分大小写的匹配 |
L或LOCALE | 为\w、\W、\b和\B 使用地区设置 |
M或MULTILINE | 将 ^ 和 $应用于包括整个字符串的开始和结尾的每一行(在正常情况下,^ 和 $仅适用于整个字符串的开始和结尾) |
S或DOTALL | 使点(.)字符匹配所有字符,包括换行符 |
U或UNICODE | 使用\w、\W、\b和\B在Unicode字符属性数据库中的信息(仅限与python2。python3默认使用Unicode) |
X或VERBOSE | 忽略模式字符串中未转义的空格和注释 |
第二部分:代码实现
首先,读取数据,并转换为列表:import pandas as pdimport numpy as npcitys = pd.read_excel("D:\\city.xls", header = None)Citys = np.array(citys).tolist()goals = pd.read_excel("D:\\goal.xls", header = None)Goals = np.array(goals).tolist()
说明:因为本人习惯用pandas进行导入和用列表来进行循环操作,所以我用array().tolist()进行转换,如果想直接从DataFrame中进行循环操作,可以用DataFrame.iterrows()、DataFrame.itertuples()、DataFrame.iteritems()来实现。建立一个空的DataFrame来存储筛选数据:
mistake = pd.DataFrame(columns = ['错误', '内陆城市'])
最后,我们结合循环语句,对目标进行筛选查询:
for city in Citys: b = "".join(city) for goal in Goals: a = "".join(goal) result = re.findall(b, a,flags=re.IGNORECASE) if len(result) != 0: new = pd.DataFrame([[a, b]], columns = ['错误', '内陆城市']) mistake = mistake.append(new, ignore_index = True)
参数说明:
str.join(sequence)
将序列中的元素(sequence)以指定的字符(str)连接生成一个新的字符串。
mistake.drop_duplicates(inplace = True)mistake.to_excel("D:\\mistake.xls")
总结
虽然我们从结果中发现,由于在一些单词中包含部分城市的拼音,所以还是需要人工进行二次筛选,但相比较看三万个数据,工作量已经大大减少,此外审核用的关键字集也是极为重要的一点,关键字集越精简,筛选的结果便越好,所以小伙伴们需要根据自己的实际情况去使用。最后,考虑到使用Python做文案审核工作的一般都没有代码经验的小伙伴,因此,我将其打包为.exe文件上传至百度云,可以根据使用说明,便于直接使用。本文完整代码和exe程序均已上传,关注公众号回复“关键字筛选”,即可获得