【问题标题】:Python Search file for a string and get the string's line numberPython 搜索文件中的字符串并获取字符串的行号
【发布时间】:2016-01-15 04:52:52
【问题描述】:

所以我用python编写了一个登录系统,我想知道我是否可以在文本文档中搜索您输入的用户名,然后让它输出找到的行并搜索密码文档。如果它与您输入的密码与该行上的字符串匹配,那么它会打印出您已登录。任何和所有帮助都将受到赞赏。在我之前的代码中,我让它搜索第一行,如果它找不到字符串,它会添加一个to line 然后重复直到找到它。然后它在同一行检查密码文件

def checkuser(user,line):  # scan the username file for the username
    ulines = u.readlines(line)
    if user != ulines:
        line = line + 1
        checkuser(user)
    elif ulines == user:
        password(user)

【问题讨论】:

  • 抱歉有点忽略该示例,它是从原始代码中截取的一部分,但要长得多。 new 告诉它是否是一个新帐户。所以如果 new =1 那么它会写入用户名和密码
  • @Cody Roberts 你还想先用用户名搜索文件吗?

标签: python


【解决方案1】:

Python 式的回答方式

f = open(filename)
line_no = [num for num,line in enumerate(f) if 'searchstring' in line][0]
print line_no+1

【讨论】:

  • 这个答案似乎比循环更快,并且在语法上更紧凑。
【解决方案2】:

获取行号的功能。你可以随心所欲地使用它

def getLineNumber(fileName, searchString):
    with open(fileName) as f:
        for i,line in enumerate(f, start=1):
           if searchString in line: 
               return i
    raise Exception('string not found')

【讨论】:

  • 小建议:不要return i+1,用enumerate(f, start=1)enumerate(f, 1),看你更喜欢什么
  • 枚举到底是什么?
  • 它为您提供当前正在迭代的项目的索引。有点像for index, item in enumerate(my_list):
  • @James 感谢您的建议 :) !
猜你喜欢
  • 2011-09-03
  • 2020-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-09
相关资源
最近更新 更多