【问题标题】:Extract text between two pattern in python using regex使用正则表达式在python中的两个模式之间提取文本
【发布时间】:2018-01-27 03:38:22
【问题描述】:

我正在尝试提取所有文本包括类别(即 A、B、C)。

A     <some text1> 

B     <some text2> 

C     <some text3> 

但是,当我应用这个正则表达式时 -

ptrn='\n[A-z]*\t'     

pattern1= '(.*)'+ptrn      

f = re.findall(pattern1,test_doc)      

它给了我

f[0] = A     <some text1> 

f[1] = <some text2> 

f[2] = <some text3> 

但我想要 -

f[0] =  A     <some text1>

f[0] =  B     <some text2> 

f[2] =  C     <some text2> 

http://csmining.org/tl_files/Project_Datasets/r8%20r52/r8-test-all-terms.txt

此链接包含许多文档的原始文本。 每个文档都有以下模式:

category<tab><sometext> \n 

因此整个语料库看起来像这样:-

category<tab><sometext1> \n 

category<tab><sometext2> \n

.

.

我想要

doc[0] = category<tab><sometext1>

doc[1] = category<tab><sometext2>

.
.
and so on

任何答案/提示都会非常有帮助:)

【问题讨论】:

  • 等一下,要查找所有文本吗?为什么需要正则表达式?是否还有其他您不想要的文字?
  • 为什么不直接使用s.split('\n')
  • @EvanNowak 因为 可以包含 '\n' 并且它将在 中拆分。
  • 也许您正在寻找类似this 的东西,但很难说。你能给我们一个更具体的输入/输出示例吗?
  • csmining.org/tl_files/Project_Datasets/r8%20r52/… 此链接包含许多文档的原始文本。每个文档都有以下模式: category \n category \n 。 .我想要 doc[1] = category doc[2] = category 等等

标签: python regex machine-learning nlp


【解决方案1】:

尝试以下模式:

import re
pattern = r"(\w+)(\t)(.*)(\b)"

说明

  • (\w+) 匹配任何单词字符一次或多次
  • \t 与制表符字面匹配
  • (.*) 匹配除行终止符之外的所有内容
  • (\b) 是单词边界

See a demo on regex101

【讨论】:

    猜你喜欢
    • 2014-08-26
    • 2022-06-10
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多