strip() 函数不会删除尾随数字

strip() function doesn't remove trailing numbers

我尝试了以下代码,但无法使用 python 3.4.3

删除尾随数字
file_name = "48athens22.jpg"
result = file_name.strip("0123456789")
print (result)

输出: athens22.jpg

出了什么问题?

strip 只删除字符串的开头和结尾。如果您想删除任何出现的子字符串或模式,请尝试 re.sub

例如

re.sub('[0-9]', '', file_name)

那些数字没有尾随。他们出现在 '.jpg'.

之前
file_name = "48athens22.jpg"
name, *extension = file_name.rpartition('.')
result = name.strip("0123456789") + ''.join(extension)
print (result)

没有尾随数字,'g'中你字符串的最后一个字符,22其实在中间,如果分条时不想考虑扩展,就得先拆分file_name 基于 '.'然后剥离第一部分,然后重新加入它们。

代码-

filenames = file_name.split('.')

result = filenames[0].strip('0123456789') + '.' + '.'.join(filenames[1:])
print(result)

strip() 只从字符串的末尾剥离; 22 不在字符串的末尾。

按以下方式操作:

import os


def strip_filename(filename):
    root, ext = os.path.splitext(filename)
    root = root.strip('0123456789')
    return root + ext


print(strip_filename('48athens22.jpg'))  # athens.jpg

适合我:

file_name = "48athens22.jpg1234"
result = file_name.strip("0123456789")
print(result)

给出:

athens22.jpg

如果要删除 所有 位数字,请尝试:

import re
file_name = "48athens22.jpg1234"
result = re.sub(r'\d+', "", file_name)
print(result)

给出:

athens.jpg    

如果您只想删除“.”之前的数字,请尝试:

result = re.sub(r'\d+\.', ".", file_name)