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