python - 如何将此列表转换为给定格式?

标签 python python-2.x

我有一个这样的列表:

  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.lstripstr.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/

相关文章:

python - 如何在不使用 .split 和 .strip 函数的情况下编写我自己的拆分函数?

python - Gensim Word2Vec 'you must first build vocabulary before training the model'

python - numpy.where : how to delay evaluating parameters?

python - 如何在Python中使用正则表达式?

python - isinstance() 和 issubclass() 返回冲突的结果

python - 使用 Python 将公式写入 Excel

python - 将字符串转换为对象名称

python - 如何省略 "connect: network is unreachable"消息

python - 恢复创建的进程的线程挂起,丢失了线程句柄

python - 在 raw_input 上使用 Python 的输入有用吗?