如何从另一个列表中删除一个字符列表?

问题描述 投票:0回答:3

我已经能够隔离我想要从用户输入的字符串中排除的字符列表(或字符串)。但我不知道如何删除所有这些不需要的字符。完成此操作后,我想我可以尝试加入用户字符串,这样它就变成了一个字母输入,就像说明中所说的那样。

使用说明:

  • 删除所有非字母字符
  • 编写一个程序,从给定的输入中删除所有非字母字符。

例如,如果输入是:

-Hello, 1 world$!

输出应该是:

Helloworld

我的代码:

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
 
$
!

所以我想我可能走在正确的道路上。我需要弄清楚如何从用户输入中获取这些字符。

python string if-statement
3个回答
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
标志使其不区分大小写。这些都被替换为空字符串,从而删除它们。


1
投票

这基本上有两个主要部分:区分 alpha 和非 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
投票
user_input = input(str())

for character in user_input:
    if character.isdigit() == False:
        if character.isupper() == True:
            print(character, end='')
        if character.islower() == True:
            print(character, end='')
print()
© www.soinside.com 2019 - 2024. All rights reserved.