繁体   English   中英

更好的方法在Python中计算另一个字符串中的字符串

[英]Better way in Python to count string in another string

这段代码有效,但在这里阅读帖子我得到的印象可能不是一个非常“Pythonic”的解决方案。 有没有更好的方法来解决这个特定的问题:

这段代码的作用是:它计算在另一个中找到的一个字符串的实例并返回计数。 如果用户尝试传入空字符串,则会引发错误。

我提出的代码版本,但想知道是否有更好的更有效的“Pythonic”方式来做到这一点:

def count_string(raw_string, string_to_count):
    if len(string_to_count) == 0:
        raise ValueError("The length of string_to_count should not be 0!")
    else:
        str_count = 0
        string_to_count = string_to_count.lower()
        raw_string = raw_string.lower()
        if string_to_count not in raw_string:
            # this causes early exit if string not found at all
            return str_count
        else:
            while raw_string.find(string_to_count) != -1:
                indx = raw_string.find(string_to_count)
                str_count += 1
                raw_string = raw_string[(indx+1): ]
            return str_count

此代码是用Python 2.7编写的,但应该在3.x中运行。

为什么不使用strcount方法?

>>> a = "abcghabchjlababc"
>>> a.count("abc")
3

另一种可能的解决

>>> a= 'almforeachalmwhilealmleandroalmalmalm'
>>> len(a.split('alm')) - 1
6
>>> q = "abcghabchjlababc"
>>> len(q.split("abc")) - 1
3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM