向我解释.join()在Python中的工作原理
我已经创建了一个用于故障排除程序的答案验证代码。我已经使用了数字答案的明显验证器(使用try/except方法),但是我现在也有yes/no问题。我搜索了internet和堆栈交换,发现了一种从答案中删除任何整数的方法(而不仅仅是答案边缘的整数,如向我解释.join()在Python中的工作原理,python,validation,python-3.x,Python,Validation,Python 3.x,我已经创建了一个用于故障排除程序的答案验证代码。我已经使用了数字答案的明显验证器(使用try/except方法),但是我现在也有yes/no问题。我搜索了internet和堆栈交换,发现了一种从答案中删除任何整数的方法(而不仅仅是答案边缘的整数,如.strip())。它使用联接方法: while True: a = input("Yes or No? ").lower() a = ''.join(c for c in a if c.isalpha()) if a == "
.strip()
)。它使用联接方法:
while True:
a = input("Yes or No? ").lower()
a = ''.join(c for c in a if c.isalpha())
if a == "y" or a == "yes":
print("You inputted Yes!")
break
elif a == "n" or a == "no":
print("You inputted No!")
break
else:
print("Please input a valid option!")
因此,如果用户输入“Y312eS2”,那么它将接受“是”的回答。但是我想知道它是如何工作的,因为我必须解释它,而且internet上所有的.join()
示例这次都不使用它
有人能帮我吗
c for c in a if c.isalpha()
迭代a
中的所有字符,只生成字母字符而不是数字字符(c.isalpha()为True
)
对于一个不带分隔符的字符串:
ABC
你有一个好主意。此方法只需将iterable参数(必须是字符串)中的所有值合并到一个新字符串中,并使用string对象将其称为joiner:
>>> ' - '.join(['foo', 'bar', 'baz'])
'foo - bar - baz'
>>> ', '.join(['spam', 'eggs', 'ham'])
'spam - eggs - ham'
在您的示例中,使用了空字符串“”
,因此连接的字符串之间没有任何分隔:
>>> ''.join(['Py', 'thon'])
'Python'
该方法的输入为:
这只是将a
中的所有字符传递给str.join()
方法(如果它们是字母);然后仅返回true,而不返回数字、空格或任何其他类型的字符:
>>> '1'.isalpha()
False
>>> 'c'.isalpha()
True
因此,'.join(如果c.isalpha()中的c代表c)
将c
中的所有字母连接到一个新字符串中,有效地过滤掉任何其他字符。.join()
它本身与从字符串中删除某些字符或验证任何内容无关
.join()
只需获取调用它的字符串('x'
对于'x'.join()
),将它作为参数连接到iterable中的每个字符串,并将整个字符串作为单个字符串返回
例如:
'*'.join(['1', '2'])
>> '1*2'
在代码中的示例中,向传递给.join()
的iterable中添加了一条条件语句,因此它只接受字母字符串。通常使用.join()方法将列表转换为字符串
您已将列表插入到该方法
该列表已生成,.join()方法将生成的列表中的每个字符与分隔字符(在您的示例中,无“”)连接起来
你的问题是什么?
join()
是如何工作的?这与使用+
的字符串连接相同…谢谢,我理解它连接字符串,但不知道它在所有字符上循环,只返回字母字符,谢谢:))只是一个小提示,isalpha()
对于整数字符串('1',2'等等)返回False,因此,语句迭代a中的所有字符,只生成字母数字的字符
,应改为迭代a中的所有字符,只生成字母的字符
。字母数字还有另一种方法,.isalnum()
>>> '1'.isalpha()
False
>>> 'c'.isalpha()
True
'*'.join(['1', '2'])
>> '1*2'