无法解决如何从另一个列表中删除字符列表的问题
Can't wrap my head around how to remove a list of characters from another list
我已经能够从用户输入的字符串中分离出我想要排除的字符列表(或字符串)。但是我不知道如何删除所有这些不需要的字符。在我这样做之后,我想我可以尝试加入用户字符串,这样它就变成了一个字母输入,就像说明中说的那样。
说明:
删除所有非字母字符
编写一个程序,从给定的输入中删除所有非字母字符。
例如,如果输入是:
-你好,1个世界$!
输出应该是:
你好世界
我的代码:
userEntered = input()
makeList = userEntered.split()
def split(userEntered):
return list(userEntered)
if userEntered.isalnum() == False:
for i in userEntered:
if i.isalpha() == False:
#answer = userEntered[slice(userEntered.index(i))]
reference = split(userEntered)
excludeThis = i
print(excludeThis)
当我打印 excludeThis
时,我得到这个作为我的输出:
-
,
1
$
!
所以我认为我可能走在正确的轨道上。我需要弄清楚如何从用户输入中获取这些字符。感谢任何帮助。
循环输入字符串。如果字符是字母,则将其添加到结果字符串中。
userEntered = input()
result = ''
for char in userEntered:
if char.isalpha():
result += char
print(result)
这也可以用正则表达式来完成:
import re
userEntered = input()
result = re.sub(r'[^a-z]', '', userEntered, flags=re.I)
正则表达式 [^a-z]
匹配除字母字符以外的任何内容。 re.I
标志使其成为 case-insensitive。这些都被替换为一个空字符串,这将删除它们。
这基本上有两个主要部分:将 alpha 与 non-alpha 区分开来,并获得只有前者的字符串。如果 isalpha()
对前者满意,那么就剩下后者了。我的理解是,被认为最 Pythonic 的解决方案是加入理解。这会像这样:
''.join(char for char in userEntered if char.isalpha())
顺便说一句,代码中有几个地方使它变得比需要的更复杂。在 Python 中,您可以遍历字符串,因此无需将 userEntered
转换为列表。 isalnum()
检查字符串是否全是字母数字,所以它是无关紧要的(字母数字包括数字)。您不应该将布尔值与 True
或 False
进行比较,只需使用布尔值即可。因此,例如,if i.isalpha() == False:
可以简化为 if not i.isalpha():
.
我已经能够从用户输入的字符串中分离出我想要排除的字符列表(或字符串)。但是我不知道如何删除所有这些不需要的字符。在我这样做之后,我想我可以尝试加入用户字符串,这样它就变成了一个字母输入,就像说明中说的那样。
说明:
删除所有非字母字符 编写一个程序,从给定的输入中删除所有非字母字符。
例如,如果输入是:
-你好,1个世界$!
输出应该是:
你好世界
我的代码:
userEntered = input()
makeList = userEntered.split()
def split(userEntered):
return list(userEntered)
if userEntered.isalnum() == False:
for i in userEntered:
if i.isalpha() == False:
#answer = userEntered[slice(userEntered.index(i))]
reference = split(userEntered)
excludeThis = i
print(excludeThis)
当我打印 excludeThis
时,我得到这个作为我的输出:
-
,
1
$
!
所以我认为我可能走在正确的轨道上。我需要弄清楚如何从用户输入中获取这些字符。感谢任何帮助。
循环输入字符串。如果字符是字母,则将其添加到结果字符串中。
userEntered = input()
result = ''
for char in userEntered:
if char.isalpha():
result += char
print(result)
这也可以用正则表达式来完成:
import re
userEntered = input()
result = re.sub(r'[^a-z]', '', userEntered, flags=re.I)
正则表达式 [^a-z]
匹配除字母字符以外的任何内容。 re.I
标志使其成为 case-insensitive。这些都被替换为一个空字符串,这将删除它们。
这基本上有两个主要部分:将 alpha 与 non-alpha 区分开来,并获得只有前者的字符串。如果 isalpha()
对前者满意,那么就剩下后者了。我的理解是,被认为最 Pythonic 的解决方案是加入理解。这会像这样:
''.join(char for char in userEntered if char.isalpha())
顺便说一句,代码中有几个地方使它变得比需要的更复杂。在 Python 中,您可以遍历字符串,因此无需将 userEntered
转换为列表。 isalnum()
检查字符串是否全是字母数字,所以它是无关紧要的(字母数字包括数字)。您不应该将布尔值与 True
或 False
进行比较,只需使用布尔值即可。因此,例如,if i.isalpha() == False:
可以简化为 if not i.isalpha():
.