繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM