python - Python2 标记化并添加到字典
问题描述
我有一些文本需要生成按空间分割的标记。
此外,我需要删除所有标点符号,因为我需要删除双括号 [[...]] 内的所有内容(包括双括号)。
我将把每个标记放在字典中,作为具有值列表的键。
我已经尝试过正则表达式来删除这些双括号模式,if-elses ...,但我找不到有效的解决方案。目前我有:
tokenDic = dict()
splittedWords = re.findall(r'\[\[\s*([^][]*?)]]', docs[doc], re.IGNORECASE)
tokenStr = splittedWords.split()
for token in tokenStr:
tokenDic[token].append(value);
我将不胜感激任何帮助 :)
谢谢
解决方案
这是你要找的吗?
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)
如果你想在这两种情况下直接附加到字典,你需要使用 defaultdict(list) 而不是 dict.. 然后如果字典中不存在键,它将创建它,使值成为一个空列表,然后添加您的值。
推荐阅读
- java - 如何使用java在用户系统中打开excel文件
- python - 在 Keras 模型中向 Conv1D 层提供输入时出错
- azure - 如何使用 ADF V1 将数据插入计算列
- javascript - 使用 LocalStorage 时 Javascript 幻灯片无法正常工作
- python - Grok Python Word 计数器
- scala - 通过将键中的值覆盖为redis列表来编写spark数据帧
- bash - 将传感器输出提取到排序数组中
- java - 科尔多瓦构建问题 - javac - 版本无法运行
- python - 迭代和词形化列表
- haskell - 在 Esqueleto 中加入子查询的结果