Iterate over a string 2 (or n) characters at a time in Python

后端 未结 12 1887
悲哀的现实
悲哀的现实 2020-11-30 07:27

Earlier today I needed to iterate over a string 2 characters at a time for parsing a string formatted like \"+c-R+D-E\" (there are a few extra letters).

12条回答
  •  执念已碎
    2020-11-30 07:55

    The other answers work well for n = 2, but for the general case you could try this:

    def slicen(s, n, truncate=False):
        nslices = len(s) / n
        if not truncate and (len(s) % n):
            nslices += 1
        return (s[i*n:n*(i+1)] for i in range(nslices))
    
    >>> s = '+c-R+D-e'
    >>> for op, code in slicen(s, 2):
    ...     print op, code
    ... 
    + c
    - R
    + D
    - e
    
    >>> for a, b, c in slicen(s, 3):
    ...     print a, b, c
    ... 
    + c -
    R + D
    Traceback (most recent call last):
      File "", line 1, in ?
    ValueError: need more than 2 values to unpack
    
    >>> for a, b, c in slicen(s,3,True):
    ...     print a, b, c
    ... 
    + c -
    R + D
    

提交回复
热议问题