Python 替换字符串的所有变体,而不考虑逗号位置

Python 替换字符串的所有变体,而不考虑逗号位置,python,regex,string,replace,variations,Python,Regex,String,Replace,Variations,我有一个数据帧,它由多行组成,其中包含由逗号分隔的字符串的不同变体。而不是不断地编写这种代码的变体,比如df.replace('Word','')。我正在寻找一种更简单的方法来替换python字符串中的变体。我听说过regex,但我很难理解它 我正在研究的一个这样的例子是df.column.str.replace('Word,?,''),它将替换Word的所有变体,而不管逗号位置如何。然而,我不确定这是如何工作的。如果您在理解和使用正则表达式方面有任何帮助,我们将不胜感激。先谢谢你 例如: 'W

我有一个数据帧,它由多行组成,其中包含由逗号分隔的字符串的不同变体。而不是不断地编写这种代码的变体,比如df.replace('Word','')。我正在寻找一种更简单的方法来替换python字符串中的变体。我听说过regex,但我很难理解它

我正在研究的一个这样的例子是df.column.str.replace('Word,?,''),它将替换Word的所有变体,而不管逗号位置如何。然而,我不确定这是如何工作的。如果您在理解和使用正则表达式方面有任何帮助,我们将不胜感激。先谢谢你

例如:

'Word, foo, bar'         
'Word'   
'foo, bar, Word'  
'foo, Word, bar'
期望输出:

'foo, bar'   
''        
'foo, bar'           
'foo, bar'
你可以按下面的方法做 输入

df = pd.DataFrame([[1, 'Word, foo, bar'],
                   [2, 'Word'],
                   [3, 'foo, bar, Word'],
                   [4, 'foo, Word, bar']],columns=['id', 'text'])

id  text
1   Word, foo, bar
2   Word
3   foo, bar, Word
4   foo, Word, bar
id  text
1   foo, bar
2   
3   foo, bar
4   foo, bar
替换文本“Word”和后面的逗号和空格(如果有)的代码

df['text']=df['text'].replace('Word(,\s)|(,\s)?Word','',regex=True)
代码中发生了什么

Word
:将搜索文本“Word”

(,\s)?
:将查找逗号
后跟空格
\s
将查找并匹配(如果可用),如果不后跟逗号和空格,则只匹配文本“Word”。所以
在这里非常重要

|
:这与两个表达式中的一个匹配(在您的案例中,第3行前面有空格和逗号时需要此选项)

你可以在这里看到详细的解释

输出

df = pd.DataFrame([[1, 'Word, foo, bar'],
                   [2, 'Word'],
                   [3, 'foo, bar, Word'],
                   [4, 'foo, Word, bar']],columns=['id', 'text'])

id  text
1   Word, foo, bar
2   Word
3   foo, bar, Word
4   foo, Word, bar
id  text
1   foo, bar
2   
3   foo, bar
4   foo, bar
这样
.replace()
方法将完成所需的工作

to_replace
是我们的正则表达式标准,它应该是字符串。
“Word”
将匹配所有字符串,除了以
“、Word”
形式出现在末尾的字符串

为了匹配这些结束字符串,我们提供了
“|”(或)
,以便我们可以添加新的标准,即
”(,)?Word“
。此处
匹配0或1次出现的
“,”
(逗号和1空格),以便结束字符串的两个条件以及仅匹配1个字符串
“单词”

Value=''
:显示要替换的内容


regex=True
:这告诉我们要将
“to_replace”
参数视为regex表达式

感谢您的解决方案,由于提供了链接,我正在为您提供解决方案的答案。正则表达式是一个我很难理解的问题,这个链接非常有用。