Python2标记化和添加到听写

2024-10-03 17:15:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些文本需要生成按空格拆分的标记。
此外,我需要删除所有标点符号,因为我需要删除双大括号[[…]](包括双大括号)中的所有内容。你知道吗

我将把每个标记放在一个字典中作为键,它将有一个值列表。你知道吗

我尝试过regex删除这些双括号模式,如果其他的…,但我找不到一个有效的解决方案。目前我有:

tokenDic = dict()
splittedWords =  re.findall(r'\[\[\s*([^][]*?)]]',  docs[doc], re.IGNORECASE) 
tokenStr = splittedWords.split()

for token in tokenStr:
    tokenDic[token].append(value);

我将感谢任何帮助:)

谢谢


Tags: 标记文本retoken内容列表字典大括号
2条回答

要删除[[]]中的所有内容,可以使用回复sub你已经有了正确的正则表达式,所以就这么做吧。你知道吗

 x = [[hello]]w&o%r*ld^$
 y = re.sub("\[\[\s*([^][]*?)]]","",x)
 z = re.sub("[^a-zA-Z\s]","",y)
 print(z)

这印着“世界”

这就是你要找的吗?你知道吗

import re
value_list = []
inp_str = 'blahblah[[blahblah]]thi ng1[[junk]]hmm'
tokenDic = dict()
#remove everything in double brackets
bracket_stuff_removed = re.sub(r'\[\[[^]]*\]\]', '', inp_str)

#function to keep only letters and digits
clean_func = lambda x: 97 <= ord(x.lower()) <= 122 or 48 <= ord(x) <= 57

for token in bracket_stuff_removed.split(' '):
    cleaned_token = ''.join(filter(clean_func, token))
    tokenDic[cleaned_token] = list(value_list)

print(tokenDic)

输出:

{'blahblahthi': [], 'ng1hmm': []}

至于附加到名单上,我现在没有足够的信息告诉你最好的方式在你的情况。你知道吗

如果要在添加键时设置值,请执行以下操作:

tokenDic[cleaned_token] = [val1, val2, val3]

如果要在添加键后设置值,请执行以下操作:

val_to_add = "something"
if tokenDic.get(cleaned_token, -1) == -1:
    print('ERROR', cleaned_token, 'does not exist in dict')
else:
    tokenDic[cleaned_token].append(val_to_add)

如果您想在这两种情况下直接附加到dict,您需要使用defaultdict(list)而不是dict。。然后,如果dict中不存在该键,它将创建该键,使该值成为空列表,然后添加您的值。你知道吗

相关问题 更多 >