我有一个标签列表,并试图打破一些标签,其中包含多个单词。
数据=“开放源码”、“软件开发”、“JavaScript”、“技术”、“Web开发”、“编程”、“移动开发”、“技术”、“专业人员”软件、“HTML5 5”、.]
我的代码用来清理数据和保存一些独特的标签-
def break_tags(data):
big_tags = []
for n in range(len(data)):
tags = []
for item in data[n][5:23]:
if item != nan:
if 'open source' in str(item).lower():
tags.append('open source')
if 'data science' in str(item).lower():
tags.append('data science')
else:
item = str(item).lower().split(' ')
tags.extend([e.strip("'():,&;+?][ ") for e in item if e not in remove])
big_tags.append(tags)
return big_tags运行break_tags(数据)后的结果
original_list1 -[开放源码‘’软件开发‘'JavaScript’‘技术’,‘网络开发’‘编程’,‘移动开发’,‘技术’,‘专业’‘软件'HTML5']
new_list1 --‘开源’,‘开放’,‘开源’,‘,’软件‘,’开发‘,'javascript',’技术‘,'web',’开发‘,’编程‘,’移动‘,’开发‘,’技术‘,’专业‘,’软件‘,'html5’
原始列表2:“数据管理”、“云计算”、“大数据”、“数据分析”、“数据可视化”、“预测分析”、“NoSQL”、“数据科学”、“”、“数据分析和建模”、“统计和数据分析”
new_list2:“数据”、“管理”、“云”、“计算”、“大数据”、“大数据”、“数据”、“分析”、“数据”、“可视化”、“预测”、“分析”、“nosql”、“数据科学”、“数据”、“科学”、“”、“数据”、“分析”、“建模”、“统计”、“数据”,“分析”
我编写这个函数是为了保持‘开放源码’和‘数据科学’,并将所有其他标记分解成单独的单词。但是很明显,有一些逻辑上的缺陷,不仅使这两个标签保持不变,而且打破了这两个标签单独的单词(见上面粗体的单词)。
有人能在这里找出这个问题吗?谢谢!
发布于 2014-11-19 08:17:03
您的问题在于您的if/if/else条件:
if 'open source' in str(item).lower():
tags.append('open source')
if 'data science' in str(item).lower():
tags.append('data science')
else:
item = str(item).lower().split(' ')
tags.extend([e.strip("'():,&;+?][ ") for e in item if e not in remove]假设项目是“开放源码”,那么您将通过第一个if并附加“开放源代码”。然后,您将测试VS‘数据科学’,并通过其他阵营。
您将不得不使用以下内容进行测试:
if ('data science' in str(item).lower()) or ('open source' in str(item).lower()):
if ('data science' in str(item).lower()):
tags.append('data science')
else:
tags.append('open source')
else:
item = str(item).lower().split(' ')
tags.extend([e.strip("'():,&;+?][ ") for e in item if e not in remove]或者,假设str(item).lower()完全是“数据科学”或“开放源代码”:
if str(item).lower() in ['data science', 'open source']:
tags.append(str(item).lower())
else:
item = str(item).lower().split(' ')
tags.extend([e.strip("'():,&;+?][ ") for e in item if e not in remove]https://stackoverflow.com/questions/27011647
复制相似问题