在Python中按字符分割字符串

3

我想从任意给定的字符串中分离字符并创建子字符串。例如,

str='abcd' => 'ab','bc','cd'

这是我的解决方案,

str='abcdef'
a=[]
for i in range(len(str)):
  a.append(str[i:i+2])
a.remove(a[-1])
print(a)

这个可以运行,但我想知道更好的做法。谢谢。

1
什么是逻辑?您想要长度为2的所有子字符串吗? - Valentino
是的,正如我展示的那样,输出应该是:ab、bc、cd、de、ef。 - john terry
[str[p:p+2] for p in range(len(str)-1)] - 101arrowz
1
无关的,但str是一个内置函数。不要将其用作变量。 - Valentino
2个回答

5
没有使用外部模块的解决方案(类似于你的实现,但更加简洁)。
[my_str[i:i+2] for i in range(len(my_str) - 1)]

so

In [3]: my_str='abcdef'

In [4]: [my_str[i:i+2] for i in range(len(my_str) - 1)]
Out[4]: ['ab', 'bc', 'cd', 'de', 'ef']

5

使用内置函数 zip()

[f'{x}{y}' for x, y in zip(s, s[1:])]

代码:

s = 'abcdef'

print([f'{x}{y}' for x, y in zip(s, s[1:])]) # Python 3.6+. For previous versions, use below line.
# [x + y for x, y in zip(s, s[1:])] 

# Outputs: ['ab', 'bc', 'cd', 'de', 'ef']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接