我有一个数据框,其中包含多行,这些行包含用逗号分隔的字符串的不同变体。而不是不断编写此代码的变体,例如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'
答案 0 :(得分:1)
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"
参数视为正则表达式
答案 1 :(得分:0)
您可以按照以下步骤进行操作 输入
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
:将搜索文本“单词”
(,\s)?
:将查找逗号,
,后跟空格\s
,?
将查找并匹配(如果可用),如果逗号和空格不跟随,则仅匹配单词“ Word”。因此?
在这里非常重要。
|
:它与2个表达式之一匹配(在您的情况下,这需要在第3行中使用前一个空格和逗号)
您可以在此处Regex Demo
查看详细的说明输出
id text
1 foo, bar
2
3 foo, bar
4 foo, bar