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

Python 在相对于另一个列表追加列表时,条件语句不起作用,python,conditional-statements,Python,Conditional Statements,我正在尝试从字符串中删除某些字符。我的方法是将字符串转换成一个列表,遍历每个列表,并将每个好字符附加到一个新列表中,然后返回这个新列表,但由于某种原因,它没有这样做。这是输入: “4193加单词” 这是输出: 4193带文字 换句话说,代码中唯一有效的部分就是删除空白部分。这是我的全部代码: class Solution: def myAtoi(self, str: str) -> int: illegal_char = ['a', 'b', 'c', 'd', '

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

“4193加单词”

这是输出:

4193带文字

换句话说,代码中唯一有效的部分就是删除空白部分。这是我的全部代码:

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

您可以在列表上执行
连接
。您需要的是一个成员资格签入列表和表单字符串,其中只包含您需要的字符:

''.join([x for x in s if x not in illegal_char]).replace(' ', '')
请注意,我已将您的字符串重命名为
s
,因为
str
是内置的


此外,如果您可以将空格作为
非法字符
包含,则可以避免
在结尾处替换

Hmm,这是替换某些字符的一种非常复杂的方法。我建议你学点正则表达式,因为它对你很有帮助。python有一个名为re的正则表达式库

这就是我的解决方案:

import re
mytext = "4193 with words"
newtext = re.sub("\s", "", mytext)

这部分完全错误:
if integer_list[i]!=任何(非法字符)
。查看文档中的
any
的作用。@zvone它返回一个布尔值,这就是我要检查的。您正在检查
integer\u list[I]
是否等于
True
。这真的是你想要检查的吗?我正在检查
整数列表[I]
是否等于
非法字符列表中的任何元素。我该怎么做呢?我不想为这样的东西创建一个嵌套的for循环。我忘了提到。在这个代码段中,如何检查第一个非空白字符是否为整数?因为如果不是,我想返回0。
s=s如果s.lstrip()[0]。isdigit()否则0
。谢谢你。我接受了你的答案,并投了赞成票。如果你认为这是一个问得很好的问题,你能不能也给我一张赞成票。@OnurOzbek,你已经有我的赞成票了。有人投了反对票,因此显示为零。:)谢谢你,伙计。我刚刚对你的答案投了赞成票。如果你认为这是一个被问得很好的问题,你能不能也给我一票?