我在文本文件中查找用户名时需要帮助,以便用户输入尚未存储在文件中的用户名。
文本文件如下所示:
aaa12 aaa12
aaa16 aaa16
iii12 iii12
代码:
username=input("Enter a username:")
with open("users.txt") as openfile:
for line in openfile:
for part in line.split():
if username in part:
print("Try again")
我觉得它不起作用。我可以使用其他任何解决方案吗?
答案 0 :(得分:2)
您可以直接对字符串(in
此处)进行__contains__
(line
)测试,无需split
- 并制作列表:< / p>
for line in openfile:
if username in line:
print("Try again")
break
对于白色分隔的用户名(如示例所示),每个用户名都是完整匹配:
for line in openfile:
if username in line.split():
print("Try again")
break
请注意,匹配用户名永远不会是完美的。如果简单匹配不起作用,那么你可能应该首先考虑选择合适的容器而不是进行文本处理。
答案 1 :(得分:1)
你重复检查次数太多了 - 你在途中,但我建议先收集,然后检查:
users = set()
with open("users.txt") as openfile:
for line in openfile:
users.update(line.split())
#Another way:
#for user in line.split():
#users.add(user)
first = True
while first or (username in users):
if not first: print("Try again, exists!")
username=input("Enter a username:")
first = False
答案 2 :(得分:0)
username=input("Enter a username:")
exists = False
with open("users.txt") as openfile:
for line in openfile:
if username in line:
exists = True
if not exists:
print("Try again")
如果您在文本文件中有多行中的用户名,则会处理此问题。基本上,你不需要在蟒蛇中分裂所有的箍,这真的是一种美。