如何在Python中使用正则表达式,以便代码将“PhD”和“Ph.D”视为同一个字符串

2024-04-20 11:41:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着读一个csv文件的教员。我的目的是统计每一个标准化学位(如博士,博士,法学博士等)的频率文件。那个文件包含相同学位的不同变体(如博士、博士和博士)。在

到目前为止,我已经使用.lower.split()将文本转换成一个全小写的列表角色。但是该列表包含相同学位的不同版本,如(博士vsph.d vs ph.d.)。我如何解决此问题?在


Tags: 文件csv文本目的角色列表变体lower
3条回答

要解决眼前的问题,还可以删除标点符号。在

.lower().replace('.', '')

您可以尝试使用re.findall和以下模式一起使用,以获得博士学位

s = 'Richard Feynman had a Ph.D. and Albert Einstein also had a phd'
print(len(re.findall('\\b(?i)ph\.?d\.?\\b', s)))

2

Demo

如果要将所有学位类型计数在一起,则仍可以使用一个regex模式对re.findall进行一次调用,并使用一个替换:

^{pr2}$

如果需要单独的计数,则可以单独调用re.findall。在

re.sub('[^a-zA-Z]','', degree.lower())

相关问题 更多 >