我有一个看似简单的问题,却似乎无法解决。给定一个包含DOI的字符串,如果最后一个字符是标点符号,我需要删除它,直到最后一个字符是字母或数字。在
例如,如果字符串是:
sampleDoi = "10.1097/JHM-D-18-00044.',"
我想要以下输出:
^{pr2}$即删除.',
为此,我写了以下脚本:
invalidChars = set(string.punctuation.replace("_", ""))
a = "10.1097/JHM-D-18-00044.',"
i = -1
for each in reversed(a):
if any(char in invalidChars for char in each):
a = a[:i]
i = i - 1
else:
print (a)
break
然而,这会产生10.1097/JHM-D-18-00
,但我希望它能产生10.1097/JHM-D-18-00044
。为什么44
从末尾移除?在
这是一种使用} 的生成表达式的方法,它使用
next
和^{enumerate
/reversed
。在使用默认参数
0
,这样,如果没有找到字母数字字符,则返回一个空字符串。在字符串函数
rstrip()
的设计目的是实现以下目的:更正代码:
这将给出您想要的输出,同时保持原始代码基本相同。在
相关问题 更多 >
编程相关推荐