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