2

"abcdefghijklmnopqrstuvwxyz"文字列を 2 つのグループのリストに分割する (文字列を : に分割する)など、文字列を分割する最良の方法["ab", "bc", "cd", ... "yz]は Python であると考えていました。

または、3 つのグループの場合: 文字列を次のように分割します。["abc", "bcd", "cde", ... "xyz"]

ありがとう!

4

4 に答える 4

4

これは、あらゆるイテラブルで機能するものです

>>> from itertools import tee, izip, islice
>>> chunksize = 2
>>> s = 'abcdefghijklmnopqrstuvwxyz'
>>> t = tee(s, chunksize)
>>> for i, j in enumerate(t):
...  next(islice(j, i, i), None)
...
>>> ["".join(k) for k in izip(*t)]
['ab', 'bc', 'cd', 'de', 'ef', 'fg', 'gh', 'hi', 'ij', 'jk', 'kl', 'lm', 'mn', 'no', 'op', 'pq', 'qr', 'rs', 'st', 'tu', 'uv', 'vw', 'wx', 'xy', 'yz']

sが常に である場合str、これはより単純です

>>> [s[i: i + chunksize] for i in range(len(s) + 1 - chunksize)]
['ab', 'bc', 'cd', 'de', 'ef', 'fg', 'gh', 'hi', 'ij', 'jk', 'kl', 'lm', 'mn', 'no', 'op', 'pq', 'qr', 'rs', 'st', 'tu', 'uv', 'vw', 'wx', 'xy', 'yz']
于 2012-08-03T06:53:57.787 に答える
1
def segment_string(s, segment_len):
    return [s[i:i+segment_len] for i in range(len(s) - (segment_len - 1))]

>>> for i in range(5):
        print segment_string("abcdefghijklmnopqrstuvwxyz", i)
['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
['ab', 'bc', 'cd', 'de', 'ef', 'fg', 'gh', 'hi', 'ij', 'jk', 'kl', 'lm', 'mn', 'no', 'op', 'pq', 'qr', 'rs', 'st', 'tu', 'uv', 'vw', 'wx', 'xy', 'yz']
['abc', 'bcd', 'cde', 'def', 'efg', 'fgh', 'ghi', 'hij', 'ijk', 'jkl', 'klm', 'lmn', 'mno', 'nop', 'opq', 'pqr', 'qrs', 'rst', 'stu', 'tuv', 'uvw', 'vwx', 'wxy', 'xyz']
['abcd', 'bcde', 'cdef', 'defg', 'efgh', 'fghi', 'ghij', 'hijk', 'ijkl', 'jklm', 'klmn', 'lmno', 'mnop', 'nopq', 'opqr', 'pqrs', 'qrst', 'rstu', 'stuv', 'tuvw', 'uvwx', 'vwxy', 'wxyz']
于 2012-08-03T06:43:51.633 に答える
1

これはワンライナーです:

def split_by_len(text, chunksize):
    return [text[i:(i+chunksize)] for i in range(len(text)-chunksize+1)]
于 2012-08-03T06:30:24.397 に答える
1
>>> groups = zip(s, s[1:], s[2:])
>>> ["".join(g) for g in groups]
['abc', 'bcd', 'cde', 'def', 'efg', 'fgh', 'ghi', 'hij', 'ijk', 'jkl', 'klm', 'l
mn', 'mno', 'nop', 'opq', 'pqr', 'qrs', 'rst', 'stu', 'tuv', 'uvw', 'vwx', 'wxy'
, 'xyz']
于 2012-08-03T06:40:33.813 に答える