Python 熊猫使用正则表达式从文本中获取值
我有这样一个文本:Python 熊猫使用正则表达式从文本中获取值,python,python-3.x,regex,pandas,regex-lookarounds,Python,Python 3.x,Regex,Pandas,Regex Lookarounds,我有这样一个文本: text = 'Ronald Mayr: A\nBell Kassulke: B\nJacqueline Rupp: A \nAlexander Zeller: C\nValentina Denk: C \nSimon Loidl: A \nElias Jovanovic: B \nStefanie Weninger: B \nFabian Peer: C \nHakim Botros: B\nEmilie Lorentsen: B\n' ['Bell Kassulke:
text = 'Ronald Mayr: A\nBell Kassulke: B\nJacqueline Rupp: A \nAlexander Zeller: C\nValentina Denk: C \nSimon Loidl: A \nElias Jovanovic: B \nStefanie Weninger: B \nFabian Peer: C \nHakim Botros: B\nEmilie Lorentsen: B\n'
['Bell Kassulke: B',
'Simon Loidl: B',
'Elias Jovanovic: B']
我需要得到所有具有“:B”值的名称。。比如贝尔·卡苏尔克,埃利亚斯·约万诺维奇
我正在尝试这样的事情
stu = re.findall('\w+.*.: B',text)
但这张给我的清单是这样的:
text = 'Ronald Mayr: A\nBell Kassulke: B\nJacqueline Rupp: A \nAlexander Zeller: C\nValentina Denk: C \nSimon Loidl: A \nElias Jovanovic: B \nStefanie Weninger: B \nFabian Peer: C \nHakim Botros: B\nEmilie Lorentsen: B\n'
['Bell Kassulke: B',
'Simon Loidl: B',
'Elias Jovanovic: B']
我只需要名字,不需要整个名单。我能做什么呢?你可以使用
^(.*?):\s*B\s*$
见
详细信息
-字符串的开头^
-第1组((.*)
的实际值):除换行符以外的任何零个或多个字符,尽可能少.findall
-冒号:
-a\s*B\s*
包含零个或多个空格B
-字符串结尾/$
df['Col name here'].str.findall(r'^(.*?):\s*B\s*$').str.join(',')
或者,如果每个值需要一个匹配项:
df['Results'] = df['Col name here'].str.extract(r'^(.*?):\s*B\s*$', expand=False)
您可以在正则表达式之后添加这行代码:
stu = [s.replace(': B', '') for s in stu]
试试这个
“(”开始捕获
\w+
匹配任何单词字符(等于[a-zA-Z0-9_])