简单的正则表达式问题.我有一个以下格式的字符串:
this is a [sample] string with [some] special words. [another one]
Run Code Online (Sandbox Code Playgroud)
提取方括号内的单词的正则表达式是什么,即.
sample
some
another one
Run Code Online (Sandbox Code Playgroud)
注意:在我的用例中,括号不能嵌套.
我有一个数据框,我想删除其中的所有括号和内容.
我检查了: 如何使用正则表达式删除括号内的文本?
删除数据的答案是
re.sub(r'\([^)]*\)', '', filename)
Run Code Online (Sandbox Code Playgroud)
我试过这个以及
re.sub(r'\(.*?\)', '', filename)
Run Code Online (Sandbox Code Playgroud)
但是,我收到了一个错误: expected a string or buffer
当我尝试使用df['Column Name']我得到的列no item named 'Column Name'
我检查了数据框使用df.head(),它显示为一个干净的表,列名称是我想要的...但是当我使用re表达式删除(东西)时,它不识别我的列名称有.
我通常使用
df['name'].str.replace(" ()","")
Run Code Online (Sandbox Code Playgroud)
但是,我想删除括号和内部的内容....如何使用正则表达式或pandas执行此操作?
谢谢!
这是我用过的解决方案......感谢您的帮助!
All['Manufacturer Standard Name'] = All['Manufacturer Standard Name'].str.replace(r"\(.*\)","")
Run Code Online (Sandbox Code Playgroud) 当我有这样的字符串:
s1 = 'stuff(remove_me)'
Run Code Online (Sandbox Code Playgroud)
我可以轻松删除括号和使用中的文本
# returns 'stuff'
res1 = re.sub(r'\([^)]*\)', '', s1)
Run Code Online (Sandbox Code Playgroud)
为解释在这里.
但我有时遇到这样的嵌套表达式:
s2 = 'stuff(remove(me))'
Run Code Online (Sandbox Code Playgroud)
当我从上面运行命令时,我最终得到了
'stuff)'
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
re.sub('\(.*?\)', '', s2)
Run Code Online (Sandbox Code Playgroud)
这给了我相同的输出.
如何删除外括号内的所有内容 - 包括括号本身 - 以便我最终得到'stuff'(这应该适用于任意复杂的表达式)?
我需要编写一个Perl脚本来读取文件,并删除<>内的任何内容,即使它们位于不同的行上.也就是说,如果输入是:
Hello, world. I <enjoy eating
bagels. They are quite tasty.
I prefer when I ate a bagel to
when I >ate a sandwich. <I also
like >bananas.
Run Code Online (Sandbox Code Playgroud)
我希望输出为:
Hello, world. I ate a sandwich. bananas.
Run Code Online (Sandbox Code Playgroud)
如果文本与正则表达式在一行,我知道如何做到这一点.但我不知道怎么用多行来做.最终我需要能够有条件地删除模板的一部分,这样我就可以为配置文件生成参数化文件.我认为perl会是一种很好的语言,但我仍然掌握它.
编辑:还需要超过1个<>的实例
试图找到所有出现的字符
string1 = '%(example_1).40s-%(example-2)_-%(example3)s_'
Run Code Online (Sandbox Code Playgroud)
所以输出中出现的所有' - ''_'都不在括号中
['-', '_', '-', '_']
Run Code Online (Sandbox Code Playgroud)
不需要关心嵌套括号