首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >循环&由于逻辑缺陷导致的字符串处理错误- python

循环&由于逻辑缺陷导致的字符串处理错误- python
EN

Stack Overflow用户
提问于 2014-11-19 07:54:08
回答 1查看 44关注 0票数 0

我有一个标签列表,并试图打破一些标签,其中包含多个单词。

数据=“开放源码”、“软件开发”、“JavaScript”、“技术”、“Web开发”、“编程”、“移动开发”、“技术”、“专业人员”软件、“HTML5 5”、.]

我的代码用来清理数据和保存一些独特的标签-

代码语言:javascript
运行
复制
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”、“数据科学”、“数据”、“科学”、“”、“数据”、“分析”、“建模”、“统计”、“数据”,“分析”

我编写这个函数是为了保持‘开放源码’和‘数据科学’,并将所有其他标记分解成单独的单词。但是很明显,有一些逻辑上的缺陷,不仅使这两个标签保持不变,而且打破了这两个标签单独的单词(见上面粗体的单词)。

有人能在这里找出这个问题吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-19 08:17:03

您的问题在于您的if/if/else条件:

代码语言:javascript
运行
复制
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‘数据科学’,并通过其他阵营。

您将不得不使用以下内容进行测试:

代码语言:javascript
运行
复制
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()完全是“数据科学”或“开放源代码”:

代码语言:javascript
运行
复制
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]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27011647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档