【问题标题】:Splitting strings on an nth character in Python [duplicate]在Python中的第n个字符上拆分字符串[重复]
【发布时间】:2013-10-18 16:00:49
【问题描述】:

我想知道如何每隔 n 个字符/字母(在我的例子中是第 5 个字符/字母)对我的 Python 字符串进行切片。

所以我有这个字符串"ilikestackoverflow",我希望输出是"ilike stack overf low"

【问题讨论】:

    标签: python split slice


    【解决方案1】:
     x = zip(*[iter(my_array)]*5)
    

    是一种很酷但很难阅读的方式

    通常它是通过列表理解来完成的

    n = 5
    x = [my_array[i:i+n] for i in range(0,len(my_array),n)]
    

    这篇文章解释了iter 最佳答案http://www.stavros.io/posts/brilliant-or-insane-code/

    【讨论】:

    • 您能解释一下这是如何工作的吗?
    • 鸡血和五角星
    • 我从哪里来的?
    • for i in BLAH 创建一个本地范围的 i ... 它的标准列表理解内容
    【解决方案2】:

    一个好的正则表达式怎么样?

    >>> string = "Ireallylovemyregularexpressions!"
    >>> print re.sub(r'(.{5})', r'\1 ', string)
    Ireal lylov emyre gular expre ssion s!  
    

    (.{5}) 每 5 个字符匹配一次,r'\1 ' 将这 5 个字符替换为相同的 5 个字符加上一个空白字符。


    这也有效:

    >>> m = re.split(r'(.{5})', 'Ilovestackoverflowsobad')
    >>> print m
    ['', 'Ilove', '', 'stack', '', 'overf', '', 'lowso', 'bad']
    >>> for word in m:
    ...     if word == '':
    ...         pass
    ...     else:
    ...         print word,
    ... 
    Ilove stack overf lowso bad
    

    【讨论】:

    • +1 虽然这让我想起了那句话“我遇到了问题,我想'我知道我会使用正则表达式'......”
    • 哈哈,是的,我同意,但我正在研究正则表达式,你知道:如果你有一把锤子,每个问题都开始看起来像钉子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    相关资源
    最近更新 更多