python搜索文本文件

时间:2015-03-24 11:37:25

标签: python file search

我想在txt文件中搜索变量“elementid”

  f = open("wawi.txt", "r")
  r = f.read()
  f.close()
  for line in r:
      if elementid in line:
          print("elementid exists")
          break
元素可能是123456

txt包含三行:

1235
56875
123456

但代码不打印“elementid存在”,为什么? 我使用python 3.4

4 个答案:

答案 0 :(得分:0)

当您read文件时,您将整个内容读成字符串。

当你迭代它时,你一次得到一个角色。

尝试打印行:

for line in r:
     print line

你会得到

1
2
3
5

5
6
8
7
5

1
2
3
4
5
6

你需要说:

for line in r.split('\n'):
    ...

答案 1 :(得分:0)

重新安排您的代码

f = open("wawi.txt", "r")
for line in f:
    if elementid in line: #put str(elementid) if your input is of type `int`
        print("elementid exists")
        break

答案 2 :(得分:0)

将整数转换为字符串THEN迭代文件中的行,检查当前行是否与elementid匹配。

elementid = 123456 # given
searchTerm = str(elementid)
with open('wawi.txt', 'r') as f:
    for index, line in enumerate(f, start=1):
        if searchTerm in line:
            print('elementid exists on line #{}'.format(index))

输出

elementid exists on line #3

另一种方法

更强大的解决方案是从每行中提取所有数字并找到所述数字中的数字。如果数字存在于当前行中的任何位置,则会声明匹配。

方法

numbers = re.findall(r'\d+', line)   # extract all numbers
numbers = [int(x) for x in numbers]  # map the numbers to int
found   = elementid in numbers       # check if exists

实施例

import re
elementid = 123456 # given
with open('wawi.txt', 'r') as f:
    for index, line in enumerate(f, start=1):
        if elementid in [int(x) for x in re.findall(r'\d+', line)]:
            print('elementid exists on line #{}'.format(index))

答案 3 :(得分:0)

f = open("wawi.txt", "r")

for lines in f:
    if "elementid" in lines:
        print "Elementid found!"
    else:
        print "No results!"