python - 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))
解决方案
您可以使用正则表达式在一行中执行此操作(好吧,两个,用于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":
推荐阅读
- html - 将动态类名添加到 React 中的硬编码类列表中
- python - 当鼠标在小部件上时如何显示突出显示的标签
- ios - 将 RealityKit 框架导入项目会使旧设备崩溃
- regex - 在 Google 工作表中使用 REGEXMATCH 过滤以过滤掉单元格中包含的文本
- python - 如何在 django 的表单中从模型字段设置 attr
- r - 在R中用奇怪的符号重命名文件
- mongodb - 如何修复来自设置为源的 kafka-mongo-connector 的消息 ID
- docker - 在 Dockerfile 中安装 pyspark
- c# - C# TreeView 搜索功能实现
- android - 显示回收器视图android的加载更多按钮结束