我有一个要求建立一个正则表达式,它的开头是速率符号@取反3,然后是长度在1到12位之间的数字,最后以三个@符号结束。除此以外的任何内容均应选择。

基本上,我的挑战是我有一个具有文本语料库和模式@@@0-9@@@中的值的数据框,我想删除此模式以外的所有内容。我已经能够将正则表达式开发为[@][@][@]\d{1,12}[@][@][@],但是我想取消这种模式,因为我想查找并替换。例如

my name is x and i work at @@@12354@@@ and i am happy with my job. what is your company name? is it @@@42334@@@? you look happy as well!!


应该返回@@@12354@@@ @@@42334@@@,因此在单独的元素之间留出一定的空间会很棒。有什么帮助吗?

我将在python pandas dataframe uisng str.replace函数中使用此正则表达式。

我已经尝试过regexr.comregex101.com并且到目前为止

**编辑:**下面是数据

SNo details
1   account @@@0000082569@@@ / department stores uk & ie credit control operations
2   academic @@@0000060910@@@ , administrative, and @@@0000039198@@@ liaison coordinator
3   account executive, financial @@@0000060910@@@ , enterprise and partner group
4   2015-nasa summer internship- space power system @@@0000129849@@@ and testing
5   account technical @@@0000185187@@@ , technical presales, systems engineer
6   account @@@0000082569@@@ for car, van & 4x4 products in the east of england
7   account @@@0000082569@@@ for mikro segment and owners of the enterprises
8   account @@@0000082569@@@ - affinity digital display, mobile & publishing
9   account @@@0000082569@@@ @@@0000060905@@@ -energy and commodities @@@0000086889@@@ candidate
10  account @@@0000082569@@@ for companies department of external relevance

最佳答案

这是我在my comment中的意思:

>>> df = pd.DataFrame({'col1':['at @@@12354@@@ and i am happy with my job. what is your company name? is it @@@42334@@@? you look happy as well!!', 'at @@@222@@@ and t @@@888888@@@?' ]})
>>> df['col1'].str.findall(r'@{3}\d+@{3}').apply(' '.join)
0    @@@12354@@@ @@@42334@@@
1     @@@222@@@ @@@888888@@@


@{3}\d+@{3}将匹配包含3个@符号的任何1+数字,并且.findall将提取所有匹配项。 .apply(' '.join)将值与空格连接起来。

关于python - 正则表达式用于取反三个@,后跟数字,最后三个@,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44140375/

10-12 21:21