我有一个这样的列表:
hello = [[<User: mr--adhikari>], [<User: mr--adhikari>], [<User: mr--adhikari>, <User: awesome>]]
我想将列表转换为如下所示:
[['mr--adhikari'], ['mr--adhikari'], ['mr--adhikari', 'awesome']]
尝试过:
re = [i.split(':')[1] for i in hello]
ref = [i.split('>')[0] for i in ref]
如果我在同一列表中没有两个元素,则此方法有效。我在同一个列表中可能有也可能没有两个元素。
编辑: 我的动态列表:
shared_username = ['[<User: mr--adhikari>]', '[<User: mr--adhikari>]', '[<User: mr--adhikari>]', '[<User: mr--adhikari>]', '[<User: mr--adhikari>, <User: awesome>]', '[<User: mr--adhikari>]', '[<User: mr--adhikari>]', '[<User: mr--adhikari>]', '[<User: mr--adhikari>]']
shared_username = [[y.lstrip('<User: ').rstrip('>') for y in x] for x in shared_username]
结果:
[['[', '', '', '', '', '', '', '', 'm', '', '-', '..so on
最佳答案
结合使用sts.lstrip
和str.rstrip
:
演示:
>>> strs = '[<User: mr--adhikari>]'
>>> strs = strs.lstrip('[<User: ')
>>> strs
'mr--adhikari>]'
>>> strs = strs.rstrip('>]')
>>> strs
'mr--adhikari'
代码:
>>> hello = [['<User: mr--adhikari>'], ['<User: mr--adhikari>'], ['<User: mr--adhikari>', '<User: awesome>']]
>>> [ [y.lstrip('<User: ').rstrip('>') for y in x] for x in hello ]
[['mr--adhikari'], ['mr--adhikari'], ['mr--adhikari', 'awesome']]
更新:
>>> shared_username = ['[<User: mr--adhikari>]', '[<User: mr--adhikari>]', '[<User: mr--adhikari>]', '[<User: mr--adhikari>]', '[<User: mr--adhikari>, <User: awesome>]', '[<User: mr--adhikari>]', '[<User: mr--adhikari>]', '[<User: mr--adhikari>]', '[<User: mr--adhikari>]']
>>> [[y.lstrip('[<User: ').rstrip('>]') for y in x.split(', ')] for x in shared_username]
[['mr--adhikari'], ['mr--adhikari'], ['mr--adhikari'], ['mr--adhikari'], ['mr--adhikari', 'awesome'], ['mr--adhikari'], ['mr--adhikari'], ['mr--adhikari'], ['mr--adhikari']]
演示:
strs = '[<User: mr--adhikari>, <User: awesome>]'
首先在 ', '
处拆分字符串以获取字符串列表,现在循环此列表并应用 str.lstrip
, str.rstrip
如上所述。
>>> strs.split(', ')
['[<User: mr--adhikari>', '<User: awesome>]']
更新:
使用正则表达式
:
演示:
>>> import re
>>> r = re.compile(r'User:\s([A-Za-z\-._/@]+)')
>>> strs = '[<User: sachitad>, <User: awesome>]'
>>> r.findall(strs)
['sachitad', 'awesome']
>>> strs1 = '[<User: mr--adhikari>, <User: awesome>]'
>>> r.findall(strs1)
['mr--adhikari', 'awesome']
>>> strs2 = '[<User: respect>]'
>>> r.findall(strs2)
['respect']
>>> strs = '[<User: sa@chi.tad>, <User: awe_so/me>]'
>>> r.findall(strs)
['sa@chi.tad', 'awe_so/me']
代码:
>>> shared_username = ['[<User: mr--adhikari>]', '[<User: mr--adhikari>]', '[<User: mr--adhikari>]', '[<User: mr--adhikari>]', '[<User: mr--adhikari>, <User: awesome>]', '[<User: mr--adhikari>]', '[<User: mr--adhikari>]', '[<User: mr--adhikari>]', '[<User: mr--adhikari>]']
>>> [r.findall(item) for item in shared_username]
[['mr--adhikari'], ['mr--adhikari'], ['mr--adhikari'], ['mr--adhikari'], ['mr--adhikari', 'awesome'], ['mr--adhikari'], ['mr--adhikari'], ['mr--adhikari'], ['mr--adhikari']]
关于python - 如何将此列表转换为给定格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17269662/