首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用regex从文件中提取文本?

如何使用regex从文件中提取文本?
EN

Stack Overflow用户
提问于 2012-11-27 22:46:51
回答 3查看 5.6K关注 0票数 2

嗨,我正在寻找一种使用Python使用Regex提取文本文件一部分的方法:下面是我的代码:

代码语言:javascript
复制
    texfile=open("texte.txt", "r")
        for line in texfile:
            if re.match("^text(.*)", line):
               print line,

我正在搜索文本后面的文本,直到它到达段落的末尾,或者当它到达一个空白时,但是我的代码只返回1行中单词" text“后面的单词。

例如:

代码语言:javascript
复制
bla bla hhhhhhhh text bla blajjjjjjjjjjjjjjjjjjjjj
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
ffff

必须返回:

代码语言:javascript
复制
bla blajjjjjjjjjjjjjjjjjjjjj
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
ffff

谢谢我试过了你所有的代码,但没有人像我想要的那样工作:我现在想让它变得简单,提取出跟随某个“文本”的流,直到它到达一个空行:

代码语言:javascript
复制
          text
    sssssssssssssssss
     ssssssss
    kkkk
    lllmmm

    kkkk

   ;must return 
    sssssssssssssssss
    ssssssss
    kkkk
    lllmmm
    ;because of the blank line
EN

Stack Overflow用户

发布于 2012-12-05 11:51:57

如果你不是被迫使用雷克斯,你可以用这个.

将文件加载为列表:

代码语言:javascript
复制
with open("texte.txt", "r") as fileInput:
    listLines = fileInput.readlines()

获取包含关键字的行的索引,如果它不止一次存在,您可能无法得到预期的结果,但这是一个简单的修复:

代码语言:javascript
复制
listIndex = [i for i, item in enumerate(listLines) if "text" in item]

这是在关键字后面没有空行的行,方法是对列表进行切片:

代码语言:javascript
复制
lines = [line for line in listLines[listIndex[0]:] if line]

您可能希望在关键字后面使用以下任何文本:

代码语言:javascript
复制
lineMatched = listLines[listIndex].split("text")[1].strip()

并打印结果:

代码语言:javascript
复制
print "\n".join([lineMatched] + lines if lineMatched else lines)
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13594578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档