python 将列表[str]转换为列表[list]

2w2cym1i  于 2023-01-19  发布在  Python
关注(0)|答案(4)|浏览(189)

我需要将第一个列表格式化为与第二个相同的格式。

print(incorrent_format_list)
['AsKh', '2sAc', '7hQs', ...]

print(correct_format_list)
[['As', 'Kh'], ['2s', 'Ac'], ['7h', 'Qs'], ...]

我试过:

for h in incorrect_format_list:
         split_lines = h.split(", ")
# but the print output is this:

['AsKh']  
['2sKh']
['7hQs']

#rather than what i need: 

[['As', 'Kh'], ['2s', 'Ac'], ['7h', 'Qs'], ...]
agxfikkp

agxfikkp1#

你可以按如下方式对字符串进行切片:

my_list = ['AsKh', '2sAc', '7hQs']

corrected_list = [[e[:2], e[2:]] for e in my_list]

print(corrected_list)
    • 输出:**
[['As', 'Kh'], ['2s', 'Ac'], ['7h', 'Qs']]
vaj7vani

vaj7vani2#

在学习了其他答案中建议的基本for循环方法之后,您还可以通过将函数Map到初始列表中的每个值,在一行中完成此操作

a = ['AsKh', '2sAc', '7hQs']
list(map(lambda i: [i[:2], i[2:]], a))

其思想是通过切片从中间分割每个字符串。这里使用2,因为每个项都是固定长度。

7hiiyaii

7hiiyaii3#

如果在整个列表中是这种情况,则按大写字母拆分
考虑incorrect_list=['AsKh', '2sAc', '7hQs']

import re
correct_format_list=[]
for i in incorrect_list:
    correct_format_list.append(re.split('(?<=.)(?=[A-Z])', i))
print (correct_format_list)

输出:

[['As', 'Kh'], ['2s', 'Ac'], ['7h', 'Qs']]
mzillmmw

mzillmmw4#

你可以使用more_itertools库对字符串进行分片,然后把这些分片后的字符串列表追加到输出列表(fs)中:

from more_itertools import sliced

ss = ['AsKh', '2sAc', '7hQs']
fs = []
for h in ss:
    fs.append(list(sliced(h, 2)))

print(fs)

输出:
[["As"、"Khs"]、["2s"、"Acs"]、["7h"、"Qs"]]

相关问题