Python:删除字符串的最后一个数字

2024-06-02 06:09:14 发布

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

我需要4行代码来完成这个脚本,但我认为可以在2行代码中完成(甚至可能是1行!让我们做梦吧)。有人有解决办法吗? 您可以测试代码以查看预期结果

def remove_nbr_at_the_end_of_the_string(my_str):
    while my_str[-1] in ["0", "1", "2", "3" ,"4" ,"5" ,"6" ,"7" ,"8" ,"9"]:
        my_str = my_str[:-1]
    if my_str[-1] == " ": my_str = my_str[:-1]
    return my_str


for text in ["ACCDS 122", "GR DDF 0332", "MLMD 12 334", "MMED DFE"]:
    print(remove_nbr_at_the_end_of_the_string(text))

Tags: ofthe代码textin脚本stringmy
3条回答

使用此选项可以从末尾删除最后一个数字和空格

my_str.rstrip('0123456789').strip()

你可以用正则表达式来做

import re

def remove_nbr_at_the_end_of_the_string(my_str):
  found_numbers = re.findall(r'\d+', my_str)
  return my_str.replace(found_numbers[-1], "") if (found_numbers) else my_str

这将查找数字,从末尾使用“r”开始。 如果找到任何字符串,它将删除第一个(从后面),否则字符串将按原样返回

您可以使用正则表达式在一行中完成此操作(对于import re,两行):

import re

for text in ["ACCDS 122", "GR DDF 0332", "MLMD 12 334", "MMED DFE"]:
    print(re.sub(r" ?\d+$", "", text))

产生:

ACCDS
GR DDF
MLMD 12
MMED DFE

注意?前面的空格。这将限制它只删除一个数字,如果有一个数字,再加上空格。如果要扩展到其他形式的空白,如制表符,可以用\s替换

还请注意,正如所写的,这将删除任何在Unicode中被视为数字的内容。如果要限制为0-9,请使用以下命令:

re.sub(r" ?\d+$", "", text, re.ASCII)

作为未来的参考,您的while循环条件可以简化为:

while my_str[-1] in "0123456789":

相关问题 更多 >