Python 检查字符串中的最后一个字符是否不是字母
我有这样一个字符串:Python 检查字符串中的最后一个字符是否不是字母,python,regex,string,ironpython,Python,Regex,String,Ironpython,我有这样一个字符串: "A_Origin1_1" 我想删除字符串末尾的所有数字和符号。要获得: "A_Origin" 我可以去掉号码,但不能去掉“\uquot。我该怎么做 这是我目前掌握的代码: def getNumericTail(str): return re.split('[^\d]', str)[-1] def endsWithNumber(str): return bool(getNumericTail(str)) def removeNumericalPort
"A_Origin1_1"
我想删除字符串末尾的所有数字和符号。要获得:
"A_Origin"
我可以去掉号码,但不能去掉“\uquot
。我该怎么做
这是我目前掌握的代码:
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.sub
>>> re.sub(r'[\W_\d]+$', r'', "A_Origin1_1")
'A_Origin'
您不需要重新拆分您可以使用str.rstip():
您不需要重新拆分您可以使用str.rstip():
只需反转您的方法-如果最后一个字符是数字,则不删除它,如果它不是字母,则删除它:
>>> 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
>>start=“123”
>>>而不是启动[-1]。isalpha():
开始=开始[:-1]
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
而不是启动[-1]。isalpha():
索引器错误:字符串索引超出范围
你可能应该看看;函数名应该是带有下划线的
小写字母,并且您不应该比较==True
只需反转您的方法-如果最后一个字符是数字,则不删除它,如果它不是字母,则删除它:
>>> start = "A_Origin1_1"
>>> while start and not start[-1].isalpha():
start = start[:-1]
>>> start
'A_Origin'
str1="A_Origin1_1"
while not str1[-1].isalpha():
str1=str1[:-1]
print (str1)
请注意,在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
>>start=“123”
>>>而不是启动[-1]。isalpha():
开始=开始[:-1]
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
而不是启动[-1]。isalpha():
索引器错误:字符串索引超出范围
你可能应该看看;函数名应该是带有下划线的小写字母,并且不应该比较==True
str1="A_Origin1_1"
while not str1[-1].isalpha():
str1=str1[:-1]
print (str1)
输出:
>>>
A_Origin
>>>
只检查字符串的最后一个字符不是字母。而循环将一直处理,直到字符串的最后一个字符是字母
输出:
>>>
A_Origin
>>>
只需检查字符串的最后一个字符不是字母。While循环将进行处理,直到字符串的最后一个字符是字母。要匹配结尾没有[a-Za-z]的字符串,我将使用:
^.*?[^A-Za-z]$
要匹配结尾没有[a-Za-z]的字符串,我将使用:
^.*?[^A-Za-z]$
如果您想保留您的代码,您可以将re.split('[^\d]')…
修改为re.split('[^\d]')
如果您想保留您的代码,谢谢大家的快速回复。只要允许,我会尽快接受答案。您可以将re.split('[^\d]'…
修改为re.split('[^\d]')
如果您想保留您的代码。感谢大家的快速回复。只要允许,我会尽快接受答案。请注意,如果字符串中的所有字符都不是字母,则此操作将失败(导致尝试确定“”[-1]
)。请注意,如果字符串中的所有字符都不是字母,则此操作将失败(导致尝试确定“”[-1]
)。