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



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

"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

您可以在列表理解上做一个join。您需要的是一个成员资格签入列表和表单字符串,其中仅包含您需要的字符:

''.join([x for x in s if x not in illegal_char]).replace(' ', '')

请注意,我已将您的字符串重命名为s,因为str是内置的。

另外,如果可以包含空格作为illegal_char则可以避免在末尾replace

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

这将是我的解决方案:

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

最新更新