首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Python清理带有两个分隔符的数据?

如何使用Python清理带有两个分隔符的数据?
EN

Stack Overflow用户
提问于 2021-03-25 23:58:12
回答 2查看 42关注 0票数 1

我在单列中有多行文本。例如,有一列如下:- NIKE// RT-2 \n PUMA// AB-C \n NIKE// QE-3-R

我不需要"//“和"\n”之间的数据。我只需要像耐克,彪马这样的品牌,我需要他们的数量。例如,在这种情况下,我想知道这一列中有两个耐克和一个彪马。

我是Python的初学者。几个星期以来,我一直在尝试解决这个问题,但仍然没有突破。如果你们能提供帮助,我将不胜感激。干杯。

EN

回答 2

Stack Overflow用户

发布于 2021-03-26 00:29:34

在纯Python中,您可以尝试这样做:

代码语言:javascript
复制
import re
from collections import Counter

row = "NIKE// RT-2 \n PUMA// AB-C \n NIKE// QE-3-R"

counts = Counter([item.replace("//", "") for item in re.findall("\w+//", row)])

print(counts)  # Counter({'NIKE': 2, 'PUMA': 1})

从这里开始,您只需对每一行进行迭代。

票数 0
EN

Stack Overflow用户

发布于 2021-03-26 00:32:33

这似乎是一个使用正则表达式的好地方。正则表达式(或正则表达式)是可以从字符串中提取特定文本模式的特殊字符串。(https://en.wikipedia.org/wiki/Regular_expression)

对于您的示例,字符串‘’.+(?=//)‘’非常适合它。它主要是告诉计算机在\n\\之间查找内容并返回文本。在我的示例代码中,我使用正则表达式返回一个列表。

代码语言:javascript
复制
import re

regex = r".+(?=//)"

test_str = ("NIKE// RT-2\n"
    "PUMA// AB-C\n"
    "NIKE// QE-3-R\n")

matches = re.findall(regex, test_str, re.MULTILINE) #["NIKE", "PUMA", "NIKE"]

results = dict((brand,matches.count(brand)) for brand in set(matches))

print(results)

re.findall函数将文本提取到列表中(参见注释)。之后,我使用字典理解创建了一个字典,显示每个品牌的数量。(https://www.datacamp.com/community/tutorials/python-dictionary-comprehension)

最终输出为:

代码语言:javascript
复制
{'NIKE': 2, 'PUMA': 1}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66803228

复制
相关文章

相似问题

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