检查字符串中的最后一个字符是否不是字母
Check if Last Character in a String is Not a Letter
我有一个这样的字符串:
"A_Origin1_1"
我想删除字符串末尾的所有数字和符号。获得:
"A_Origin"
我可以去掉号码,但不能 "_"
。我该怎么做?
这是我目前的代码:
def getNumericTail(str):
return re.split('[^\d]', str)[-1]
def endsWithNumber(str):
return bool(getNumericTail(str))
def removeNumericalPortion(str):
return str[:-1];
## IN MAIN ##
fixedName = "A_Origin1_1"
while endsWithNumber(fixedName) == True:
fixedName = removeNumericalPortion(fixedName);
你可以使用 re.sub
>>> re.sub(r'[\W_\d]+$', r'', "A_Origin1_1")
'A_Origin'
你不需要 re.split
你可以使用 str.rstip()
:
>>> import string
>>> s.rstrip(string.digits+string.punctuation)
'A_Origin'
只需反转您的方法 - 如果最后一个字符是数字,则不删除它,如果它不是字母,则将其删除:
>>> start = "A_Origin1_1"
>>> while start and not start[-1].isalpha():
start = start[:-1]
>>> start
'A_Origin'
请注意,在 while
测试中包含 start
可确保正确处理空字符串;否则,如果字符串中的所有字符都被剥离,它将崩溃:
>>> start = "123"
>>> while not start[-1].isalpha():
start = start[:-1]
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
while not start[-1].isalpha():
IndexError: string index out of range
你应该看看 the style guide;函数名应该是 lowercase_with_underscores
并且你不应该比较 == True
.
str1="A_Origin1_1"
while not str1[-1].isalpha():
str1=str1[:-1]
print (str1)
输出:
>>>
A_Origin
>>>
只是检查字符串的最后一个字符不是 alphabetic.While 循环将处理直到字符串的最后一个字符是字母。
要匹配末尾没有 [A-Za-z] 的字符串,我会使用:
^.*?[^A-Za-z]$
我有一个这样的字符串:
"A_Origin1_1"
我想删除字符串末尾的所有数字和符号。获得:
"A_Origin"
我可以去掉号码,但不能 "_"
。我该怎么做?
这是我目前的代码:
def getNumericTail(str):
return re.split('[^\d]', str)[-1]
def endsWithNumber(str):
return bool(getNumericTail(str))
def removeNumericalPortion(str):
return str[:-1];
## IN MAIN ##
fixedName = "A_Origin1_1"
while endsWithNumber(fixedName) == True:
fixedName = removeNumericalPortion(fixedName);
你可以使用 re.sub
>>> re.sub(r'[\W_\d]+$', r'', "A_Origin1_1")
'A_Origin'
你不需要 re.split
你可以使用 str.rstip()
:
>>> import string
>>> s.rstrip(string.digits+string.punctuation)
'A_Origin'
只需反转您的方法 - 如果最后一个字符是数字,则不删除它,如果它不是字母,则将其删除:
>>> start = "A_Origin1_1"
>>> while start and not start[-1].isalpha():
start = start[:-1]
>>> start
'A_Origin'
请注意,在 while
测试中包含 start
可确保正确处理空字符串;否则,如果字符串中的所有字符都被剥离,它将崩溃:
>>> start = "123"
>>> while not start[-1].isalpha():
start = start[:-1]
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
while not start[-1].isalpha():
IndexError: string index out of range
你应该看看 the style guide;函数名应该是 lowercase_with_underscores
并且你不应该比较 == True
.
str1="A_Origin1_1"
while not str1[-1].isalpha():
str1=str1[:-1]
print (str1)
输出:
>>>
A_Origin
>>>
只是检查字符串的最后一个字符不是 alphabetic.While 循环将处理直到字符串的最后一个字符是字母。
要匹配末尾没有 [A-Za-z] 的字符串,我会使用:
^.*?[^A-Za-z]$