我正在尝试从字符串中删除某些字符。我的做法是将字符串转换为列表,遍历每个列表并将每个好的字符附加到一个新列表并返回该新列表,但由于某种原因,它没有这样做。这是输入:"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
2 回答
繁花如伊
TA贡献2012条经验 获得超12个赞
你可以做一个join
列表理解。您需要的是一个会员签入列表和表单字符串,其中仅包含您需要的那些字符:
''.join([x for x in s if x not in illegal_char]).replace(' ', '')
请注意,我已将您的字符串重命名为s
,因为str
它是内置的。
还要补充一点,如果你可以包括空间,illegal_char
你可以在最后避免replace
。
白衣染霜花
TA贡献1796条经验 获得超10个赞
这是一种非常复杂的替换某些字符的方法。我建议你学习一些正则表达式,因为它可以帮助你很多。有一个用于 python 的正则表达式库,称为 re。
这将是我的解决方案:
import re
mytext = "4193 with words"
newtext = re.sub("\s", "", mytext)
添加回答
举报
0/150
提交
取消