将字符串按多个字符分割为数组

1 投票
5 回答
957 浏览
提问于 2025-04-16 08:18

我有一个字符串,我想把它变成一个字符串数组,比如:

"hello world"
["hel", "lo ", "wor", "ld"]

或者

["hell", "o wo", "rld"]

我看到用 list(message) 这个方法可以做到,但只是针对

["h", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d", ]

有没有什么好的想法呢?

5 个回答

2
>>> lst = ['he', 'llo', ' wo', 'rld']
>>> ''.join(lst)
'hello world'
>>> s = 'hello world'
>>> list(s)
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']

这些是基本的内容;如果你有任何具体的需求,可以在这个帖子下留言,我会更新我的回答。

3

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。比如说,当用户点击一个按钮时,我们希望程序能做出反应。这种情况下,我们就会用到“事件”这个概念。简单来说,事件就是程序在运行过程中发生的事情,比如点击、输入文字或者移动鼠标。

当一个事件发生时,我们可以设置一些“监听器”,也就是程序的一部分,它们会等待这些事件的发生。一旦事件发生,监听器就会被触发,执行我们预先设定好的代码。这就像是你在家里装了一个门铃,门铃响了之后你就知道有人来了。

在编程中,事件和监听器的结合使用,可以让我们的程序变得更加互动和智能。通过这种方式,用户的每一个操作都能被程序捕捉到,从而做出相应的反应。

>>> def split_length(s, l):
...     return [s[i:i+l] for i in range(0, len(s), l)]
... 
>>> split_length("hello world", 3)
['hel', 'lo ', 'wor', 'ld']
>>> split_length("hello world", 4)
['hell', 'o wo', 'rld']
3
>>> s = 'hello world'
>>> [s[i:i+3] for i in range(len(s)) if not i % 3]
['hel', 'lo ', 'wor', 'ld']

如果你想要一个更通用的解决方案(也就是说,可以自定义分割方式),可以试试这个函数:

def split_on_parts(s, *parts):
    total = 0
    buildstr = []
    for p in parts:
        buildstr.append(s[total:total+p])
        total += p
    return buildstr

s = 'hello world'
print split_on_parts(s, 3, 3, 3, 3)
print split_on_parts(s, 4, 3, 4)

这个函数会产生以下输出:

['hel', 'lo ', 'wor', 'ld']
['hell', 'o w', 'orld']

或者如果你真的想要一个一行代码的写法:

def split_on_parts(s, *parts):
    return [s[sum(parts[:p]):sum(parts[:p+1])] for p in range(len(parts))]

撰写回答