python说isalpha()没有定义,尽管它是内置的(我认为)[已关闭]

mwg9r5ms  于 2023-03-09  发布在  Python
关注(0)|答案(2)|浏览(193)

**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
2天前关闭。
Improve this question
我正在运行一个程序,它取一个数字和字母的列表,并将数字分离成一个sperate列表并打印该列表,但每次我运行代码时它都说isalpha没有定义。

yes = []
item=[1,7,-10,34,2,"a",-8]
for things in item:
    if isalpha() ==True:
        continue
    else:
        yes.append
        print(yes)
oug3syen

oug3syen1#

isalpha()str类的一个方法,如果字符串中的所有字符都是字母,则返回True,否则返回False。例如:

>>> MyString = "fwUBCEFèfewf"
>>> MyString.isalpha()
True
>>> MyOtherString = "f13bbG"
>>> MyOtherString.isalpha()
False

为了分隔item数组中的所有字母和数字,需要如下重写代码:

letters = []
numbers = []

item=[1,7,-10,34,2,"a",-8]
for things in item:
    if str(things).isalpha():
        letters.append(things)
    else:
        numbers.append(things)

print(letters)
print(numbers)

# output:
# ['a']
# [1, 7, -10, 34, 2, -8]

你必须在条件中执行str(things),因为isalpha()是一个只能用于字符串而不能用于整数的函数,如果你不添加它,你会得到一个错误消息AttributeError: 'int' object has no attribute 'isalpha'
如果你使用isinstance()函数来检查things是否是字符串,你也可以这样做,你可以这样做:

letters = []
numbers = []

item=[1,7,-10,34,2,"a",-8]
for things in item:
    if isinstance(things, str) and things.isalpha():
        letters.append(things)
    else:
        numbers.append(things)

print(letters)
print(numbers)

# output:
# ['a']
# [1, 7, -10, 34, 2, -8]

因为字母只能是字符串,你可以用isinstance()函数检查things是否是str类型,这里有两个条件必须是True
我希望我能帮助你:)

pdsfdshx

pdsfdshx2#

.isalpha是一个方法而不是函数(请参阅this tutorial以了解更多有关区别的信息),因此不能通过名称调用它。

if str(things).isalpha(): continue

if isinstance(things, str) and things.isalpha(): 
        continue

此外,continue后面不需要else,因此可以跟在后面**yes.append(things)**(而不仅仅是 yes.append):

yes = []
item=[1,7,-10,34,2,"a",-8]
for things in item:
    if isinstance(things, str) and things.isalpha(): 
        continue
    yes.append(things)
    print(yes)

(But为什么要在循环内部而不是在循环之后打印yes [potentially on repeat]?)
或者,您可以只使用list comprehensionview output

item=[1,7,-10,34,2,"a",-8]
yes = [i for i in item if not (isinstance(i, str) and i.isalpha())] 
print(*yes, sep='\n')

相关问题