有人帮助我得到这个权利。地址字段中的一些棘手模式。一些用户在街道名称字段中输入街道名称和郊区名称。需要清理它们。但清理变得棘手,因为这两个场景 -python - 正则表达式替换字符串中的单词列表
- 街道名称和郊区的名字是相同的,有时
- 多字的郊区名称与它们之间的空间。
示例: -
df1
Street_Name
Point Chevalier Road Point Che
Point Chevalier Road Point Ch
Point Chevalier Road Point Cheval
Point Chevalier Road Point Chevalier
Kings Road Point Chevalier
Point Chevalier
这里的逻辑是,如果有多于一个的以仅除去所述第二匹配字。如果只有一个匹配,但前面还有其他一些字,那应该是“道路或街道名称+郊区名称”,因此请从中删除郊区名称。如果该字段中只有匹配的单词,请将其保留原样。
输出应该是,
Street_Name
Point Chevalier Road
Point Chevalier Road
Point Chevalier Road
Point Chevalier Road
Kings Road
Point Chevalier
我们可以在停止词列表中的郊区名称的一切准备。这样的事情,
stopwords = ['point c','point ch','point che','point chev','point cheva','point cheval','point chevali','point chevalie','point chevalier']
编辑:
这是我试过了,但它并不能帮助:(
def remove_if_suburb_name(s):
stopwords = ('point c','point ch','point che','point chev','point cheva','point cheval',
'point chevali','point chevalie')
for word in stopwords:
m = re.sub(r'\b'+ word + r'\b','', s.lower(), count = 2)
return m
test['new_street_name'] = test['Street_Name'].apply(lambda x: remove_if_suburb_name(x) if pd.notnull(x) else x)
你尝试过什么解决? –
更新了我试过的问题。 –