63

文字列の長さを知らずに、文字列を取得して4*x、各x文字の長さを 4 つの文字列に分割する方法はありますか?

例えば:

>>>x = "qwertyui"
>>>split(x, one, two, three, four)
>>>two
'er'
4

15 に答える 15

105
>>> x = "qwertyui"
>>> chunks, chunk_size = len(x), len(x)/4
>>> [ x[i:i+chunk_size] for i in range(0, chunks, chunk_size) ]
['qw', 'er', 'ty', 'ui']
于 2012-12-02T19:51:30.943 に答える
24

私はアレクサンダーの答えを試しましたが、Python3でこのエラーが発生しました:

TypeError: 'float' オブジェクトは整数として解釈できません

これは、Python3 の除算演算子が float を返すためです。これは私のために働く:

>>> x = "qwertyui"
>>> chunks, chunk_size = len(x), len(x)//4
>>> [ x[i:i+chunk_size] for i in range(0, chunks, chunk_size) ]
['qw', 'er', 'ty', 'ui']

//整数への切り捨てを確実にするために、2 行目の最後の に注意してください。

于 2014-04-30T09:12:48.397 に答える
9
some_string="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
x=3 
res=[some_string[y-x:y] for y in range(x, len(some_string)+x,x)]
print(res)

生産します

['ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQR', 'STU', 'VWX', 'YZ']
于 2018-02-09T13:34:22.143 に答える
8

n 文字ごとに文字列を分割しますか? 、「オオカミ」は最も簡潔な答えを与えます:

>>> import re
>>> re.findall('..','1234567890')
['12', '34', '56', '78', '90']
于 2020-10-08T18:32:29.613 に答える
7
def split2len(s, n):
    def _f(s, n):
        while s:
            yield s[:n]
            s = s[n:]
    return list(_f(s, n))
于 2016-05-24T20:10:35.553 に答える
6

これは、文字列の長さを事前に知る必要のないワンライナーです。

from functools import partial
from StringIO import StringIO

[l for l in iter(partial(StringIO(data).read, 4), '')]

ファイルまたはソケットがある場合は、StringIO ラッパーは必要ありません。

[l for l in iter(partial(file_like_object.read, 4), '')]
于 2014-08-11T19:00:42.963 に答える
0

そして、もう少し読みやすいものを好む人のために:

def itersplit_into_x_chunks(string,x=10): # we assume here that x is an int and > 0
    size = len(string)
    chunksize = size//x
    for pos in range(0, size, chunksize):
        yield string[pos:pos+chunksize]

出力:

>>> list(itersplit_into_x_chunks('qwertyui',x=4))
['qw', 'er', 'ty', 'ui']
于 2015-10-07T18:38:37.507 に答える
0
l = 'abcdefghijklmn'

def group(l,n):
    tmp = len(l)%n
    zipped = zip(*[iter(l)]*n)
    return zipped if tmp == 0 else zipped+[tuple(l[-tmp:])]

print group(l,3)
于 2016-12-01T07:07:00.120 に答える
0

文字列の分割は、指定された文字列の文字を並べ替えたり、文字を別の文字に置き換えたりする必要がある場合など、多くの場合に必要です。ただし、これらの操作はすべて、次の文字列分割方法で実行できます。

文字列の分割は、次の 2 つの方法で実行できます。

  1. 分割の長さに基づいて、指定された文字列をスライスします。

  2. list(str) 関数を使用して、指定された文字列をリストに変換します。文字列の文字が分解されてリストの要素が形成されます。次に、必要な操作を行い、それらを「元の文字列の文字間の指定された文字」.join(list) で結合して、新しい処理済み文字列を取得します。

于 2016-12-01T06:49:02.403 に答える