说我有这样的文字字符串:
我想解析Make,Model,Processor,Screen size,HD Size,RAM,Condition
我想知道,什么是解析这些字符串的最pythonic方式?
目前,我正在执行以下操作:
is x in y
:
以下是一些示例代码:
import re
data={}
complist = {'make':['Apple','Toshiba','HP', 'Fujitsu'...],
'model':['Air','Surface','Zenbook','Lifebook','Mac Pro',...],
'condition':['New','Used','Refurbished'...]}
string = 'Fujitsu LifeBook E734 13.3" i5 2.5GHz/4Gb RAM/500Gb SSHD Like NEW'
for comparison in complist :
for compare in complist[comparison]:
if compare in string:
data[comparison]=compare
string = string.replace(compare, '')
stringsplit=re.findall(r"[\w']+", string )
for i,s in enumerate(stringsplit):
if any(key in s for key in ['Mb','Gb','Tb']):
...
data['Ram']=...
if any(...
我可以蛮力这个,但是" ......"我正在寻找一些指导。此外,第一部分也可以更有效地完成。
非常感谢任何帮助。
答案 0 :(得分:1)
通常情况下,您需要将string
拆分为一个列表,然后遍历它以查看它是否出现在complist
字典中(而不是相反):
stringList = string.split()
for s in stringList:
#loop through the complist to find matches
这样做,您将能够减少循环次数
关于列表: 使用排序列表! 因为你可以使用二进制搜索,这是非常快的
关于集合: 因为看起来你只需要查找单词是否在列表中。您可以将完整列表存储为集,而不是列表。集合中成员资格测试的速度是O(n)(" Big O-notation"),并且比列表更快