删除数字字符串python

2024-06-01 09:00:21 发布

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

对于我的赋值,我必须创建一个函数,该函数返回一个与给定字符串相同的新字符串,但删除了数字。

示例: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))

我也得到同样的结果。

有人能帮我吗?非常感谢。


Tags: 函数字符串intestforreturndefch
3条回答

用这个

string = ''.join([c for c in string if c not in "1234567890"])

使用正则表达式

import re
def test(str):
    string_no_numbers = re.sub("\d+", " ", str)
    print(string_no_numbers)
test('abc123') #prints abc

你的第二个解决方案很接近:

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()])

相关问题 更多 >