我正在编写一个旧字典的解析器,我正在尝试在字符串中找到类似re.findall(“{。*}”,string)的模式。 检查后的控件打印证明,只有少数字符串匹配,尽管所有字符串都包含{...}等模式。 甚至复制字符串并在空闲shell中以交互方式匹配它 给出一个匹配,但在其余的代码中,它根本就没有。
这个问题是否可能是由实际的python解释器引起的? 我无法弄清楚任何其他问题...
感谢您的帮助
代码段看起来像这样:
for aParse in chunklist:
aSigle = aParse[1]
aParse = aParse[0]
print("to be parsed", aParse)
aContext = Context()
aContext._init_("")
aContext.ID = contextID
aContext.source = aSigle
# here, aParse is the string containing {Abriss}
# which is part of a lexicon entry
metamatches = re.findall("\{.*\}", aParse)
print("metamatches: ", metamatches)
for meta in metamatches:
aMeta = meta.replace("{", "").replace("}", "")
aMeta = aMeta.split()
for elem in aMeta:
...
答案 0 :(得分:0)
试试这个:
re = {0: "{.test1}",1: "{.test1}",2: "{.test1}",3: "{.test1}"}
for value in re.itervalues():
if "{" in value:
value = value.replace("{"," ")
print value
或者如果你想同时删除" {}“
for value in re.itervalues():
if "{" in value:
value = value.strip('{}')
print value
答案 1 :(得分:0)
答案 2 :(得分:0)
因此,在一个非常简化的场景中,词汇条目看起来像这样:
“headword”{meta,意为} context [上下文参考]。
所以,我正在使用正则表达式在[...]上分组(split())。到目前为止工作正常。然后,在分隔词条之后,我试图找到带有正则表达式的元/含义,找到{...}形式的所有模式。由于该正则表达式不起作用,我用这个函数替换它:
def findMeta(self, string, alist):
opened = 0
closed = 0
for char in enumerate(string):
if char[1] == "{":
opened = char[0]
elif char[1] == "}":
closed = char[0]
meta = string[opened:closed+1]
alist.append(meta)
string.replace(meta, "")
现在,它实际上更快,并且正确分析了意义组件。剩下的问题是:我用来查找其他信息的正则表达式有多远(例如,由“s。”引入的正交变体)可靠吗?它们应该工作还是IDLE shell可能无法正确解析1000行程序(并编译所有正则表达式)?实际上应该找到元的字符串的示例是:“{stm。} {der abbruch thut,den armendasgebührendevorenthält} [Renn。]”
算法找到第一个,说这个词是名词,但第二个,它的翻译,是不被识别的。
......这是中世纪的德国人,对不起!谢谢你的帮助。