如何使用正则表达式删除所有员工

时间:2015-10-08 16:26:25

标签: python regex

这是我的txt文件中一些行(解决方案,pos和光泽)的副本:

solution: (كَتَبَ kataba) [katab-u_1] 
     pos: katab/VERB_PERFECT+a/PVSUFF_SUBJ:3MS
gloss: ___ + write + he/it <verb> 

我想在第一行的方括号内返回“katab”这个词,并删除所有人员和行,并为每件事编号。我正在研究python 2.7

我试着写这段代码:

pattern = re.compile("'(?P[^']+)':\s*(?P<root>[^,]*)\d+") 

1 个答案:

答案 0 :(得分:0)

每当你想到“我需要匹配一个模式”时,你应该认为“正则表达式”是一个很好的起点。见doco。由于输入文件是unicode,因此它有点棘手。

import re
import codecs

with codecs.open("test.unicode.txt","rb", "utf-8") as f:
    words = []
    for line in f.readlines():
        matches = re.match(b"solution:.+\[(?P<word>\w+).*\]", line, flags=re.U)
        if matches:
            words.append(matches.groups()[0])

print(words)

输出:

[u'katab']