代码之家  ›  专栏  ›  技术社区  ›  Petr Petrov

正则表达式:如何将单词上的字符串按一定长度拆分

  •  0
  • Petr Petrov  · 技术社区  · 6 年前

    我需要检查字符串中的一些单词的数量

    len(re.split('[А-Яа-яЁё]{5,}', s))
    

    但它的工作原理是错误的,而且很容易出错 'Москва, Вавилова' 它回来了

    ['', ', ', '']
    

    ['Москва', 'Вавилова']
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   fuwiak    6 年前

    试试这个

    re.findall('[А-Яа-яЁё]{5,}', 'Москва,Вавилова')
    

    从文件中。

    re.findall
    

    字符串中模式的不重叠匹配,如字符串列表。

    re.split
    

    按模式出现次数拆分字符串。

        2
  •  1
  •   Patrick Artner    6 年前

    Counter() 动手吧:

    from collections import Counter
    text = "tata, ohhhhh, tata, oh, tata, ohhhh"
    c = Counter ( (len(w.strip()) for w in text.split(",") ))
    
    print(c.most_common())
    

    输出:

    [(4, 3), (2, 1), (5, 1), (6, 1)] # (word-length, count)
    

    defaultdict

    d = defaultdict(list)
    for w in (w.strip() for w in text.split(",")):
        d[len(w)].append(w)
    
    print(d)
    

    输出:

    defaultdict(<type 'list'>, 
                {2: ['oh'], 4: ['tata', 'tata', 'tata'], 5: ['ohhhh'], 6: ['ohhhhh']})
    

    len() 之后再看名单。