ATS*_*ron 7 python list sublist
我有一个字符串列表s如下:
s = ['Hello', 'world', '!', 'How', 'are', 'you', '?', 'Have', 'a', 'good', 'day', '.']
Run Code Online (Sandbox Code Playgroud)
我希望将此列表拆分为子列表.每当有?!.\n一个新的子列表形成如下:
final = [['Hello', 'world', '!'],
['How', 'are', 'you', '?'],
['Have', 'a', 'good', 'day', '.']]
Run Code Online (Sandbox Code Playgroud)
我试过这个:
x = 0
for i in range(len(s)):
if s[i] in ('!','?','.','\n'):
final = s[x: x+i]
x = i+1
Run Code Online (Sandbox Code Playgroud)
最终存储我的输出.没有得到应有的方式.有什么建议?
您可以使用以下内容:
s = ['Hello', 'world', '!', 'How', 'are', 'you', '?', 'Have', 'a', 'good', 'day', '.']
letters = ['!', '?', '.']
idxes = [idx for idx, val in enumerate(s) if val in letters]
idxes = [-1] + idxes
answer = [s[idxes[i]+1:idxes[i+1]+1] for i in range(len(idxes[:-1]))]
print(answer)
Run Code Online (Sandbox Code Playgroud)
输出
[['Hello', 'world', '!'], ['How', 'are', 'you', '?'], ['Have', 'a', 'good', 'day', '.']]
Run Code Online (Sandbox Code Playgroud)
这使用带有内置enumerate函数的列表理解来提取标点符号出现的位置idxes。然后,它使用另一个列表理解通过使用 的值s进行切片来构造子列表列表。sidxes
| 归档时间: |
|
| 查看次数: |
933 次 |
| 最近记录: |