我是python的新手,所以任何意见/建议都表示赞赏。我试图从文本文件中提取用户名和角色并将它们存储到列表中,以便我可以将它们写入单独的文件。用户名是动态的,所以如果该行以id" admin"开头,我就不能简单地开始解析。每次。用户名每次都不在同一行,因为之前有各种文本行,所以我首先搜索以USERNAME开头的唯一静态行,并知道用户名在下一行直到blank()行。
文本文件如下所示:
(Dynamic lines of text..)
USERNAME ROLE
user345 user
admin31414 admin
user113131 user
user34342 user
admin585 admin
user333 user
user599 user
我遇到问题的方法是在解析文件时如何跳转到下一行,如果初始行以" username"开头。我使用file.next()但它只是跳转到for循环中的下一行(不再是静态),IF语句失败。我目前的循环代码如下:
for line in file:
if line.startswith('USERNAME'):
file.next()
正如我之前所说,我是python的新手,所以任何帮助/建议都将不胜感激。
答案 0 :(得分:0)
最简单的方法可能就是在你再次循环之前执行测试,例如:
found_username = False
for line in file:
if found_username:
# process line here
if line.startswith('USERNAME'):
found_username = True
答案 1 :(得分:0)
您可以使用布尔变量来记住何时应该记录用户名以及何时不应该记录用户名。
record = False
for line in file:
if line.startswith('--END--'): # so you don't catch any extra lines
break # this exits the loop
if record:
print line # or whatever code you want to run on each username
if line.startswith('USERNAME'):
record = True # this will be visible in the next loop iteration
当您已经循环“文件”时,不应该调用'file.next'。循环将负责调用'next'。如果要跳到循环的下一次迭代,请使用'continue'语句。
答案 2 :(得分:-1)
您可以使用拆分线拆分所有行
with open(r"user.txt", "r") as f:
lines = f.read().splitlines()
for eachLine in lines:
if eachLine.startswith('USERNAME'):
pass