附加列表相对于另一个列表时,条件语句不起作用

我正在尝试从字符串中删除某些字符。我的做法是将字符串转换为列表,遍历每个列表并将每个好的字符附加到一个新列表并返回该新列表,但由于某种原因,它没有这样做。这是输入:


"4193 with words"


这是输出:


4193withwords


换句话说,代码中唯一有效的部分是删除空格的部分。这是我的整个代码:


class Solution:

    def myAtoi(self, str: str) -> int:

        illegal_char = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '!', '@', '#', '$', '%', '^', '&' '*', '(', ')', '=', '+', '[', ']', '{', '}', '|']

        new_list = []


        integer_list = list(str)


        for i in range(len(integer_list)):

            if integer_list[i] != any(illegal_char):

                new_list.append(integer_list[i])

        output = ''.join(new_list)

        output = output.replace(' ', '')


        return output


白猪掌柜的
浏览 113回答 2
2回答

繁花如伊

你可以做一个join列表理解。您需要的是一个会员签入列表和表单字符串,其中仅包含您需要的那些字符:''.join([x for x in s if x not in illegal_char]).replace(' ', '')请注意,我已将您的字符串重命名为s,因为str它是内置的。还要补充一点,如果你可以包括空间,illegal_char你可以在最后避免replace。

白衣染霜花

这是一种非常复杂的替换某些字符的方法。我建议你学习一些正则表达式,因为它可以帮助你很多。有一个用于 python 的正则表达式库,称为 re。这将是我的解决方案:import remytext = "4193 with words"newtext = re.sub("\s", "", mytext)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python