【问题标题】:Count the number of elements in a string separated by comma计算以逗号分隔的字符串中的元素个数
【发布时间】:2017-01-10 14:48:20
【问题描述】:

我正在处理如下文本字符串: LN1 2DW, DN21 5BJ, DN21 5BL, ...

在 Python 中,如何计算逗号之间的元素数量?每个元素可以由 6、7 或 8 个字符组成,在我的示例中显示了 3 个元素。分隔符始终是逗号。

我从来没有做过任何与文本挖掘相关的事情,所以这对我来说是一个开始。

【问题讨论】:

  • 计算逗号 (stackoverflow.com/a/1155647/5869805) 并加 1
  • 谁能告诉我为什么这个投票如此低?我知道通常应该包含代码和您尝试过的内容,但是来吧。这是一个具体、清晰和简单的问题。它看起来不像是“解决我的家庭作业”类型的问题,而且我认为 OP 不知道他自己在谷歌上搜索所需的概念词是完全公平的。我个人认为这不是一个坏问题。
  • 因为这是一个基本的问题。
  • 这与问题的复杂性无关,而是与那些不赞成你甚至没有先用谷歌搜索的人的信念有关。
  • 要 google 一些东西,需要知道数学/代码结构概念被称为什么,或者知道如何提取数据。这并不总是可能的,或者至少不像某些人想象的那么容易。要理解一个人只需要计算逗号并添加一个,必须首先考虑这种方法。要了解您可以拆分字符串,您必须了解拆分函数。我完全理解这不是每个人都可以用谷歌搜索的。您需要一定程度的上下文理解,不是每个人都有。

标签: python text text-mining comma


【解决方案1】:

如果逗号 (,) 是分隔符,您可以简单地在字符串上使用str.split,然后在结果上使用len(..)

text = 'LN1 2DW, DN21 5BJ, DN21 5B'
number = len(text.split(','))

您还可以重复使用元素列表。例如:

text = 'LN1 2DW, DN21 5BJ, DN21 5B'
tags = text.split(',')
number = len(tags)
#do something with the `tags`

【讨论】:

  • Text.count (',')+1
  • 这项工作确实更有效,但下一步可能是迭代元素。
  • 这里不忽略空格
  • @sagar:在循环中,可以使用.strip 等简单地对每个元素进行后处理。
  • 我很想看看这种方法 (split + len) 与 str.count() 的基准。如果你有时间,请随意。 :-)
【解决方案2】:

你可以数一下逗号的个数:

text.count(",") + 1
# 3

【讨论】:

  • 我很想看看这种方法 (str.count()) 与 split + len 的基准。如果你有时间,请随意。 :-)
  • 是的,我也想知道什么更有效 - 计算逗号或拆分并使用 len?
  • @BramVanroy 使用ipython 及其内置的%timeit 进行了真正的快速测试。结果:text.count(',')+1:每个循环 665 ns ± 3.06 ns len(text.split(',')):每个循环 3.59 µs ± 19.3 ns 测试数据是 91 个元素的列表。
  • @KMunro 查看我之前的评论。
【解决方案3】:

Willien 和 Psidom 已经提到了count

我只是想补充一点,在 python 中,字符串也是可迭代的,因此也可以应用列表推导:

n = len([c for c in ','+text if c==','])

或者

n = sum(1 for c in ','+text if c==',')

【讨论】:

  • 你为什么要这样做? SO 应该提供最好的答案,而不是所有可能的选择
  • 请随意投反对票,如果我的回答违反 SO 政策,我相信您可以要求版主将其删除
  • 你没有违反任何规则,但为什么要提出比现有答案更糟糕的选择。有很多可能的答案,比如你也可以包括len(list(filter(lambda x: ord(x) == 44, text)))+1,但它真的没有添加任何东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多