Python正则表达式字符串匹配文件

时间:2017-10-31 17:32:13

标签: python regex string match text-files

我有一个类似于

的文本文件
  

alpha alphabet alphameric

我想只匹配第一个字符串'alpha',没有别的

我有以下代码尝试仅匹配alpha字符串并获取其行号

findWord = re.findall('\\ba\\b', "alpha")

with open(file) as myFile:
for num, line in enumerate(myFile, 1):
    if findWord in line:

        print 'Found at line: ', num

但是我收到以下错误:

  

TypeError:' in'需要字符串作为左操作数,而不是列表

3 个答案:

答案 0 :(得分:1)

您可以稍微修改一下代码

with open(file, 'r') as myFile:
    for num, line in enumerate(myFile, 1):
        if 'alpha' in line.split():
            print 'Found at line', num

输出:

  

在第1行找到

答案 1 :(得分:1)

代码中的问题

  1. re.findall('\\ba\\b', "alpha")提供了匹配的列表,但您在if findWord in line中使用的意思是使用list代替字符串。这就是你得到的错误
  2. 通过提供findWord = re.findall('\\ba\\b', "alpha"),您正在搜索不存在的字母字符串中的字符串a
  3. 试试这个

    import re
    #findWord = re.findall('\\ba\\b', "alpha")
    #print findWord
    with open("data.txt") as myFile:
        for num,line in enumerate(myFile):
            if re.findall('\\balpha\\b', line):
    
                print 'Found at line: ', num+1
    

答案 2 :(得分:0)

你可以试试这个:

import re
s = "alpha alphabet alphameric"
data = re.findall("alpha(?=\s)", s)[0]

输出:

"alpha"