[英]Replace all variations of a string regardless of comma position Python
我有一个由多行组成的数据框,其中包含用逗号分隔的字符串的不同变体。 而不是不断编写此代码的变体,例如 df.replace('Word,', '')。 我正在寻找一种更简单的方法来替换 python 的字符串变体。 我听说过正则表达式,但很难理解它。
我正在研究的一个这样的例子是 df.column.str.replace('Word,?', '') 它将替换 Word 的所有变体,而不管逗号位置如何。 但是,我不确定这是如何工作的。 任何帮助理解使用正则表达式替换的帮助将不胜感激。 先感谢您。
例子:
'Word, foo, bar'
'Word'
'foo, bar, Word'
'foo, Word, bar'
期望输出:
'foo, bar'
''
'foo, bar'
'foo, bar'
df.replace(to_replace='Word,|(, )?Word',value='',regex=True)
这样.replace()
方法将完成所需的工作。
to_replace
是我们的正则表达式标准,它应该是字符串。 'Word,'
将匹配除末尾以外的所有字符串,形式为", Word"
。
为了匹配这些结束字符串,我们提供了"|"(or)
以便我们可以添加新的条件,即"(, )?Word"
。 这里?
匹配 0 或 1 次出现的", "
(逗号和 1 个空格),以便结束字符串的两个条件以及仅匹配 1 个字符串"Word"
Value = ''
:显示要替换的内容
regex = True
:它告诉将"to_replace"
参数视为正则表达式
您可以按照以下方式进行输入
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
替换文本“Word”和后面的逗号和空格(如果有)的代码
df['text']=df['text'].replace('Word(,\s)|(,\s)?Word','',regex=True)
代码中发生了什么
Word
: 将搜索文本“Word”
(,\\s)?
: 将查找逗号,
然后是空格\\s
, ?
如果可用,将查找并匹配,如果后面没有逗号和空格,则只匹配文本“Word”。 那么?
在这里很重要。
|
:这匹配 2 个表达式之一(在您的情况下,这是第 3 行需要的,其中前面有空格和逗号)
您可以在此处查看详细说明Regex Demo
输出
id text
1 foo, bar
2
3 foo, bar
4 foo, bar
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.