Python 除了正则表达式中的一个东西外,我可以删除所有内容:“引用”;co-“;。不知道该如何处理这个短跑
我有一列县,前面有Python 除了正则表达式中的一个东西外,我可以删除所有内容:“引用”;co-“;。不知道该如何处理这个短跑,python,regex,Python,Regex,我有一列县,前面有co,co,co.,co-`等变量,我想去掉这些,只留下县名(在本例中为科克) 这就是我尝试过的,并且删除了大多数,除了第三个,破折号-与单词Cork相连 x['fixed']=(x['area'].str.replace('co\s+', '', case=False) .str.replace('co.\s+', '', case=False) .str.replace('county\s+', '', case=Fa
co
,co,
co.,
co-`等变量,我想去掉这些,只留下县名(在本例中为科克)
这就是我尝试过的,并且删除了大多数,除了第三个,破折号-
与单词Cork
相连
x['fixed']=(x['area'].str.replace('co\s+', '', case=False)
.str.replace('co.\s+', '', case=False)
.str.replace('county\s+', '', case=False)
.str.replace('co\-\s+ | co-$', '', case=False)
.str.replace('co\.\s+', '', case=False)
.str.replace('\W', '')
.str.title())
print(x)
area fixed
0 Co Cork Cork
1 Co. Cork Cork
2 Co-Cork Cocork
3 Co- Cork Cork
4 co. Cork Cork
5 county cork Cork
我在这里使用了美元符号$
:.str.replace('co\-\s+| co-$','',case=False)
来获取以co-
结尾的字符串。我想那会把它去掉的。但我猜它不起作用,因为它是一个子串
那么,我做错了什么非常明显的事情呢?我建议使用
x['area'].str.replace(r'(?i)\bco(?:\b[-.]?|unty)\s*', '').str.title()
输出:
>>> x['area'].str.replace(r'(?i)\bco(?:\b[-.]?|unty)\s*', '').str.title()
0 Cork
1 Cork
2 Cork
3 Cork
4 Cork
5 Cork
Name: area, dtype: object
(?i)\bco(?:\b[-.]?| unty)\s*
:
-不区分大小写修饰符(?i)
-单词边界\b
-子字符串co
-非捕获组匹配(?:\b[-.]?| unty)
-单词边界,然后是可选的\b[-.]?
或-
-或|
-一个unty
字符串unty
--\s*
和0+空格-
|
周围使用空格,请使用r'co-(?:\s+?$)
而不是'co-\s+| co-$”
您的第二个是co.\s+
,您确定吗?您的意思是匹配co
之后的任何字符吗?或者您想匹配任何非单词字符吗?这一个co.\s+
我正在寻找一个co.
后跟一个空格。我想删除<代码> 'CO'是否有任何时间,在字符串中间的任何地方都有一个不应该被删除的<代码> CO-<代码>?如果是这样,有什么规则告诉您是否删除该co-
?提示:您提到的$
,用于“以某物结尾”的字符串。要删除的所有字符串之间是否存在类似的公共关系?但仍保留了一些co
。如果co.
与单词Cork
相连,该怎么办?像Co.Cork
@SCool你是说Cocork
应该是Cork
?只是一个sec@SCool我想我明白了,请查看最新更新。请注意,如果您将其替换为\W?
,则可能会保留[-.]?
,这绝对是完美的,而且比我的要复杂得多,但也比我的短。它工作得很好。我得研究一会儿。谢谢你的快速回复。我的\W
在那里,因为有些数据中有我试图删除的数字。示例New3纽约1
。我会设法弄明白的。再次感谢
>>> x['area'].str.replace(r'(?i)\bco(?:\b[-.]?|unty)\s*', '').str.title()
0 Cork
1 Cork
2 Cork
3 Cork
4 Cork
5 Cork
Name: area, dtype: object