我有这样的短信:
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'我需要得到所有有":B“值的名字。例如Bell Kassulke,Elias Jovanovic
我在尝试这样的方法
stu = re.findall('\w+.*.: B',text)但这一张给了我这样的清单:
['Bell Kassulke: B',
'Simon Loidl: B',
'Elias Jovanovic: B']我只需要名字而不是整个名单。我到底能做什么?
发布于 2020-09-20 12:11:19
您可以使用
^(.*?):\s*B\s*$详细信息
^ -字符串的开始(.*?) -第1组(.findall的实际值):除行中断字符以外的任何零或多个字符尽可能少: -一个冒号\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)发布于 2020-09-27 05:54:05
尝尝这个
'(‘’开始捕捉
\w+
匹配任何单词字符(等于a-zA-Z0-9_)
量词-在一次和无限次之间匹配,尽可能多次,按需要回馈(贪婪)
.*
匹配任何字符(行终止符除外)
量词-在零和无限倍之间匹配,尽可能多次,按需要回馈(贪婪)
“)”捕获的结束
*b
匹配字符:B(区分大小写)
pattern='(\w+.*.): B'
re.findall(pattern,grades)发布于 2020-09-20 12:14:40
您可以在regex之后添加这一行代码:
stu = [s.replace(': B', '') for s in stu]https://stackoverflow.com/questions/63978810
复制相似问题