Python从一个lin中读取某些文本

2024-04-25 21:57:10 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我在研究如何用Python“抓取”文本文件的某个部分,而你只知道这个特定文本之前和之后是什么。我想要一些类似于this答案的东西,但是对于单行线。例如,如果我有一个名为test.txt的文本文件,它看起来像:

This 
is 
my 
test 
file

那我就可以用了

^{pr2}$

…对于抓取my,这很好,但是如果我的文本文件是一行,例如:

This is my test file

那就没用了。我不想通过字符串索引抓取my,因为我想要的是只在知道行的那一部分之前和之后的内容的基础上工作的东西。我试着看了很多问题,但什么也没找到。在

谢谢你!在


Tags: 字符串答案test文本txt内容ismy
3条回答

可以通过正则表达式得到:

with open('test.txt') as input_data:
    for line in input_data:
       match = re.search(r' is (.*) test ', line)
       if match:
          print(line)
          print(match.group(1))

第三行查找带有“is test”的模式,如果找到,它将首先打印整行,然后只打印“is”和“my”之间的字符串。我不知道你喜欢哪一个。在

编辑:将正则表达式改为在“is”之前包含空格,否则“This”也会匹配。删除了lookahead和lookback,因为没有必要

看起来您想在“is”和“test”之间获取一些信息,那么正则表达式可能会对您有所帮助,如下所示:

with open('test.txt') as input_data:
   match = re.findall(r'\sis\s*(\w[\s\S]+?)\s*test', input_data.read())
       for item in match:
           print item
start = ' is '
end = ' test '
with open('test.txt') as input_data:
    for line in input_data:
        try:
            start_index = line.index(start) + len(start)
            end_index = line.index(end)
            print line[start_index:end_index]
        except ValueError:
            print "not find in this line[%s]" % line.rstrip()

您可以使用index找出起始词和结束词,然后得到子字符串

相关问题 更多 >