Python 将子流程的输出拆分为列表或元组
我有一个文件列表格式为Python 将子流程的输出拆分为列表或元组,python,python-3.x,Python,Python 3.x,我有一个文件列表格式为 [ “1582120598672/Users/user/Desktop/”, “1581847900 64/Users/user/Desktop//无标题文件夹”, “1581842714352/用户/用户/桌面//收据”, “158166620 433097/Users/user/Desktop//RECEIPTS/cameringo_20200214_132341.jpg” ] 我想把每个条目分成列表(或者元组,如果那样更好的话)。我目前正在使用这个: new_li
[
“1582120598672/Users/user/Desktop/”,
“1581847900 64/Users/user/Desktop//无标题文件夹”,
“1581842714352/用户/用户/桌面//收据”,
“158166620 433097/Users/user/Desktop//RECEIPTS/cameringo_20200214_132341.jpg”
]
我想把每个条目分成列表
(或者元组,如果那样更好的话)。我目前正在使用这个:
new_list=list(映射(lambda x:re.findall('(\d+)\s(\d+)\s(.*),str(x)),复制_list))
但是输出以元组
的形式返回,并封装在列表中
即。第一个条目是[('1582120598672,/Users/user/Desktop/')]
,因此新列表[0][0]
失败,而我希望它返回1582120598
感谢您的帮助我想您应该这样做:
my_list = [
'1582120598 672 /Users/user/Desktop/',
'1581847900 64 /Users/user/Desktop//untitled folder',
'1581842714 352 /Users/user/Desktop//RECEIPTS',
'1581686620 433097 /Users/user/Desktop//RECEIPTS/cameringo_20200214_132341.jpg'
]
my_new_list = [x.split(' ') for x in my_list]
那么这个,
my_new_list[0][0]
返回:
'1582120598'
我想你应该这样做:
my_list = [
'1582120598 672 /Users/user/Desktop/',
'1581847900 64 /Users/user/Desktop//untitled folder',
'1581842714 352 /Users/user/Desktop//RECEIPTS',
'1581686620 433097 /Users/user/Desktop//RECEIPTS/cameringo_20200214_132341.jpg'
]
my_new_list = [x.split(' ') for x in my_list]
那么这个,
my_new_list[0][0]
返回:
'1582120598'
- 将这些元组列表映射到列表
[['1582120598', '672', '/Users/user/Desktop/'],
['1581847900', '64', '/Users/user/Desktop//untitled folder'],
['1581842714', '352', '/Users/user/Desktop//RECEIPTS'],
['1581686620',
'433097',
'/Users/user/Desktop//RECEIPTS/cameringo_20200214_132341.jpg']]
'1582120598'
- 将这些元组列表映射到列表
[['1582120598', '672', '/Users/user/Desktop/'],
['1581847900', '64', '/Users/user/Desktop//untitled folder'],
['1581842714', '352', '/Users/user/Desktop//RECEIPTS'],
['1581686620',
'433097',
'/Users/user/Desktop//RECEIPTS/cameringo_20200214_132341.jpg']]
'1582120598'
你需要其他小组吗?似乎对于您的特定用例,您可以通过在空格上拆分字符串而不是使用正则表达式来大大简化lambda:
>>> new_list = [
... '1582120598 672 /Users/user/Desktop/',
... '1581847900 64 /Users/user/Desktop//untitled folder',
... '1581842714 352 /Users/user/Desktop//RECEIPTS',
... '1581686620 433097 /Users/user/Desktop//RECEIPTS/cameringo_20200214_132341.jpg'
... ]
>>> first_fields = [y.split()[0] for y in new_list]
['1582120598', '1581847900', '1581842714', '1581686620']
>>> first_fields[0]
'1582120598'
否则,如果您也需要其他组:
>>> new_list = list(map(lambda x: re.findall('(\d+)\s(\d+)\s(.*)',str(x)), copy_list))
>>> first_fields = [x[0][0] for x in new_list]
['1582120598', '1581847900', '1581842714', '1581686620']
>>> first_fields[0]
'1582120598'
旁白:
使用列表理解功能,您可以按如下方式简化新列表的创建:
new_list = [re.findall('(\d+)\s(\d+)\s(.*)',str(x)) for x in copy_list]
你需要其他小组吗?似乎对于您的特定用例,您可以通过在空格上拆分字符串而不是使用正则表达式来大大简化lambda:
>>> new_list = [
... '1582120598 672 /Users/user/Desktop/',
... '1581847900 64 /Users/user/Desktop//untitled folder',
... '1581842714 352 /Users/user/Desktop//RECEIPTS',
... '1581686620 433097 /Users/user/Desktop//RECEIPTS/cameringo_20200214_132341.jpg'
... ]
>>> first_fields = [y.split()[0] for y in new_list]
['1582120598', '1581847900', '1581842714', '1581686620']
>>> first_fields[0]
'1582120598'
否则,如果您也需要其他组:
>>> new_list = list(map(lambda x: re.findall('(\d+)\s(\d+)\s(.*)',str(x)), copy_list))
>>> first_fields = [x[0][0] for x in new_list]
['1582120598', '1581847900', '1581842714', '1581686620']
>>> first_fields[0]
'1582120598'
旁白:
使用列表理解功能,您可以按如下方式简化新列表的创建:
new_list = [re.findall('(\d+)\s(\d+)\s(.*)',str(x)) for x in copy_list]
谢谢不过,唯一的问题是,如果路径包含的空白也会被拆分。谢谢。不过,唯一的问题是,如果路径包含也会被拆分的空格,我确实需要其他组,不幸的是,在空格处拆分将不允许在路径中使用空格。不过谢谢你的简化。我不知道你可以这样做。我确实需要其他组,不幸的是,在空格处拆分将不允许在路径中使用空格。不过谢谢你的简化。我不知道你可以这么做。