删除数字字符串python [重复]
Posted
技术标签:
【中文标题】删除数字字符串python [重复]【英文标题】:remove numbers string python [duplicate] 【发布时间】:2017-02-15 19:40:55 【问题描述】:对于我的作业,我必须创建一个函数,该函数返回一个与给定字符串相同但删除了数字的新字符串。
示例:remove digits('abc123') 将返回字符串 'abc'。
我已经尝试了几乎所有我能想到的方法,但它不能正常工作:(
def test(str):
for ch in str:
num = ['0', '1', '2', '3', '4', '6', '7', '8', '9']
if ch == num[0]:
return str.replace(ch, '')
elif ch == num[1]:
return str.replace(ch, '')
elif ch == num[2]:
return str.replace(ch, '')
elif ch == num[3]:
return str.replace(ch, '')
elif ch == num[4]:
return str.replace(ch, '')
elif ch == num[5]:
return str.replace(ch, '')
elif ch == num[6]:
return str.replace(ch, '')
elif ch == num[7]:
return str.replace(ch, '')
elif ch == num[8]:
return str.replace(ch, '')
我输入 test('abc123'),期望输出是 'abc'。但相反,我得到 'abc23' 作为我的输出。
在其他尝试中,同样的问题:
def test(str):
for char in str:
num = ['0', '1', '2', '3', '4', '6', '7', '8', '9']
if char in list(num):
return str.replace(char, '', len(str))
我得到相同的结果。
谁能帮帮我?这将不胜感激。
【问题讨论】:
这是因为当您第一次遇到数字时,您正在从功能中返回。return
停止执行并退出函数!
另外,您可以检查char in "0123456789"
是否会简化您的代码。
【参考方案1】:
使用正则表达式
import re
def test(str):
string_no_numbers = re.sub("\d+", " ", str)
print(string_no_numbers)
test('abc123') #prints abc
【讨论】:
【参考方案2】:使用这个
string = ''.join([c for c in string if c not in "1234567890"])
【讨论】:
【参考方案3】:您的第二个解决方案很接近:
def drop_digits(in_str):
digit_list = "1234567890"
for char in digit_list:
in_str = in_str.replace(char, "")
return in_str
原来的问题是你只替换了 '1' 字符后返回。
您也可以通过列表推导来做到这一点:
return ''.join([char for char in in_str if not char.isdigit()])
【讨论】:
可能想要使用比 OP 更好的变量名 ;) 好点。改变... 谢谢老兄,真的很感激【参考方案4】:您需要阅读一些 Python 基础知识。 “return”退出你的函数,所以它只会修改一个条目。
这里有一个提示:用更新的副本替换 str 而不是返回它。
str = str.replace(ch, '')
【讨论】:
至于 python 基础......我们在这里处理的是一个函数而不是一个方法。这不是 Java ;) 嗯,如果我们要迂腐的话,测试可以在一个没有“self”参数的类中;) 如果我们想成为 super 迂腐,test 也不是因为它有缩进错误。 ^ 绝对同意【参考方案5】:def test(string):
return ''.join((letter for letter in string if not letter.isdigit()))
【讨论】:
这不仅会删除数字。 可能想查if not letter.isdigit()
我用过not letter.isdigit()
,但觉得有点矫枉过正,把它改成了.isalpha
,但现在又改了。以上是关于删除数字字符串python [重复]的主要内容,如果未能解决你的问题,请参考以下文章
华为OD机试真题 Python 实现删除重复数字后的最大数字100%通过率2022.11 Q4 新题