使用正则表达式

时间:2018-01-27 03:38:23

标签: python regex machine-learning nlp

我试图提取所有包括类别的文本(即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

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

1 个答案:

答案 0 :(得分:2)

尝试以下模式:

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

<强>解释

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

See a demo on regex101