首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:删除字符串的最后一个数字

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

Stack Overflow用户
提问于 2021-08-11 15:22:23
回答 6查看 195关注 0票数 0

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

代码语言:javascript
复制
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))
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2021-08-11 15:38:27

使用此选项可以删除最后一个数字以及末尾的空格。

代码语言:javascript
复制
my_str.rstrip('0123456789').strip()
票数 1
EN

Stack Overflow用户

发布于 2021-08-11 15:33:56

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

代码语言:javascript
复制
import re

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

这会产生以下结果:

代码语言:javascript
复制
ACCDS
GR DDF
MLMD 12
MMED DFE

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

还要注意,如前所述,这将删除任何被认为是Unicode中的数字。如果要限制为0-9,请使用以下命令:

代码语言:javascript
复制
re.sub(r" ?\d+$", "", text, re.ASCII)

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

代码语言:javascript
复制
while my_str[-1] in "0123456789":
票数 2
EN

Stack Overflow用户

发布于 2021-08-11 15:35:30

您可以使用正则表达式来完成此操作

import re

代码语言:javascript
复制
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“开始。如果找到,它将删除第一个(从后面),否则字符串将按原样返回。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68744805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档