-2

必ずしもスペースやコンマではなく、文字列内の他のすべてのエントリだけで、Python で文字列を分割できるかどうかは誰にもわかりませんか? または3日または4日ごとなど

たとえば、文字列として「12345678」があった場合、それを「12」、「34」、「56」、「78」に分割する方法はありますか?

4

3 に答える 3

0

リスト内包表記を使用できます。

>>> x = "123456789"
>>> [x[i : i + 2] for i in range(0, len(x), 2)]
['12', '34', '56', '78', '9']
于 2013-09-19T20:12:01.640 に答える
0

あなたが望むのは任意のイテラブルを取り、そのイテラブルからアイテムのグループを与えるレシピitertools grouper()ですn

def grouper(iterable, n, fillvalue=None):
    "Collect data into fixed-length chunks or blocks"
    # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return zip_longest(*args, fillvalue=fillvalue)

( 2.x ではzip_longest()と呼ばれるため、これは少し異なることに注意してくださいizip_longest()!)

例えば:

>>> list(grouper("12345678", 2))
[('1', '2'), ('3', '4'), ('5', '6'), ('7', '8')]

次に、単純なリスト内包表記で文字列を再結合できます。

>>> ["".join(group) for group in grouper("12345678", 2)]
['12', '34', '56', '78']

値のセットが完全ではない可能性がある場合は、次を使用してfillvalue=""ください。

>>> ["".join(group) for group in grouper("123456789", 2, fillvalue="")]
['12', '34', '56', '78', '9']
于 2013-09-19T20:14:24.890 に答える
0

リスト内包表記を使用できます。文字列を反復処理し、スライスと関数の追加オプションを使用して 2 文字ごとに取得しますrange

s = "12345678"
print([s[i:i+2] for i in range(0, len(s), 2)]) # >>> ['12', '34', '56', '78']
于 2013-09-19T20:12:59.713 に答える