在python3中,如何在特定位置拆分列表列表?

2024-03-29 09:34:24 发布

您现在位置:Python中文网/ 问答频道 /正文

['2006/10/18 21:15:51 4.823 -82.592 37.3 SOUTH OF PANAMA']  
['2006/10/18 10:08:45 32.165 -115.891 7.3 BAJA CALIFORNIA, MEXICO']  

同一原始列表中有两个列表:

a = [['2006/10/18 21:15:51 4.823 -82.592 37.3 SOUTH OF PANAMA'], 
['2006/10/18 10:08:45 32.165 -115.891 7.3 BAJA CALIFORNIA, MEXICO'] ] 

在这里,我想在国家名称之前把它们分开,比如:

['2006/10/18 21:15:51 4.823 -82.592 37.3]' '[SOUTH OF PANAMA']  
['2006/10/18 10:08:45 32.165 -115.891 7.3]' '[BAJA CALIFORNIA, MEXICO']  

我的问题是如何使用split()(或者其他一些方法)让python理解我想在这个特定位置分离这些列表?你知道吗


Tags: of方法名称列表国家splitsouthmexico
3条回答
a = [['2006/10/18 21:15:51 4.823 -82.592 37.3 SOUTH OF PANAMA'], 
['2006/10/18 10:08:45 32.165 -115.891 7.3 BAJA CALIFORNIA, MEXICO'] ]

fixed_split = 5
b = [[' '.join(i[0].split()[:fixed_split]), ' '.join(i[0].split()[fixed_split:])] for i in a]
print(b)

输出

[['2006/10/18 21:15:51 4.823 -82.592 37.3', 'SOUTH OF PANAMA'], ['2006/10/18 10:08:45 32.165 -115.891 7.3', 'BAJA CALIFORNIA, MEXICO']]

您可以使用re.split

import re
s = [['2006/10/18 21:15:51 4.823 -82.592 37.3 SOUTH OF PANAMA']  , ['2006/10/18 10:08:45 32.165 -115.891 7.3 BAJA CALIFORNIA, MEXICO']]
new_s = [re.split('(?<=\d)\s(?=[A-Z])', i) for [i] in s]

输出:

[['2006/10/18 21:15:51 4.823 -82.592 37.3', 'SOUTH OF PANAMA'], ['2006/10/18 10:08:45 32.165 -115.891 7.3', 'BAJA CALIFORNIA, MEXICO']]

re.split()是复杂拆分的好选择:

import re

[re.split('([\d\/\.\-\:\s]+)\s+([A-Z\s\,]+)', x[0])[1:3] for x in a]

相关问题 更多 >