Python reg.ex中的Caret(^)字符。只匹配每一行的开头,而不是整个字符串的开头?

时间:2018-01-30 01:25:06

标签: python regex

所以,我写了一个很小的Python脚本,它读取一个文本文件,这是一个丹麦语词典,然后使用reg.ex.过滤掉多余的单词和字符(如每行末尾的单词类+如果两个单词是同名词,过滤掉" 1。"" 2。"在每个单独的对于同一个单词的输入+它应该只包括第一个条目,如果有重复的话。)

字典看起来像这样:

1. A;sb.
2. A;fork.
1. a;sb.
2. a;præp.
A3-format;sb.
A4-format;sb.
A5-format;sb.
A-aktie;sb.
ab;præp.
abandonnere;vb.
abandonnering;sb.
abbed;sb.
abbedi;sb.
abbedisse;sb.
ABC;sb.
abc;sb.
abdicere;vb.

......等等。的;字符将字典条目(单词本身)与每行上的单词类分开。

我的Python脚本是这样的:

import re
p = re.compile(r'^(?:1\. )?([\wæøå-]+);', re.MULTILINE | re.IGNORECASE)

f = open("ro.txt", "r", encoding="utf-8")
ro = f.read()

matches = p.findall(ro)

f = open("result.txt", "w")
for str in matches:
    f.write(str + ", ")

它工作正常,除了一个小但非常烦人的细节!无论我做什么,文本文件中的第一行都不会包含在搜索结果中。只有当我在字典文件的顶部手动插入一个额外的行时,它才能按预期工作,并且还包括字典的最顶层条目。我怀疑我的reg.ex中的插入字符(^)。在某种程度上不能正常工作,因为它包括每一行的开头'好吧,但不是整个字符串的开头,包含整个字典。

有什么建议吗?

0 个答案:

没有答案