&引用;ValueError:list.index(x):x不在列表中;在Python中,但它是存在的

&引用;ValueError:list.index(x):x不在列表中;在Python中,但它是存在的,python,string-parsing,Python,String Parsing,我想使用Python从电子邮件地址中提取用户名。我想到的解决方案是将电子邮件地址附加到列表中,找到@符号的索引,然后对列表进行切片,直到找到索引 我的代码是: #!/usr/bin/env python<br/> email = raw_input("Please enter your e-mail address: ") email_list = [] email_list.append(email) at_symbol_index = email_list.index("@")

我想使用Python从电子邮件地址中提取用户名。我想到的解决方案是将电子邮件地址附加到列表中,找到
@
符号的索引,然后对列表进行切片,直到找到索引

我的代码是:

#!/usr/bin/env python<br/>
email = raw_input("Please enter your e-mail address: ")
email_list = []
email_list.append(email)
at_symbol_index = email_list.index("@")
email_username = email_list[0:at_symbol_index]
print email_username

我的代码有什么问题?

原因是您正在制作一个包含该字符串的列表,因此,除非输入的字符串是
“@”
,否则它不在列表中

要解决此问题,只需不将电子邮件地址添加到列表中即可。您可以直接对字符串执行这些操作

请注意,您可能想退房,或者:


原因是您正在创建一个包含该字符串的列表,因此除非输入的字符串是“@”,否则它不在列表中

要解决此问题,只需不将电子邮件地址添加到列表中即可。您可以直接对字符串执行这些操作

请注意,您可能想退房,或者:


您可以将整个电子邮件地址添加到列表中。你可能是说

email_list = list(email)
它添加了
电子邮件的字符(而不是一次添加整个字符串)。但即使这样也没有必要,因为字符串可以像列表一样进行切片/索引(所以在本例中根本不需要列表)

确定电子邮件地址用户名的更简单方法可能是

email.split("@")[0]

您可以将整个电子邮件地址添加到列表中。你可能是说

email_list = list(email)
它添加了
电子邮件的字符(而不是一次添加整个字符串)。但即使这样也没有必要,因为字符串可以像列表一样进行切片/索引(所以在本例中根本不需要列表)

确定电子邮件地址用户名的更简单方法可能是

email.split("@")[0]

另外,您提到的str.partition非常有用!它是标准库中隐藏的一些有用的小片段之一。另外,您提到的str.partition也非常有用!这是标准库中隐藏的有用的小片段之一。