Python 从嵌套列表转换为分隔字符串
免责声明:我是Python新手 我有一个外部服务,它以分隔字符串格式向我们发送数据。它是项目列表,最深可达3级。级别1由“|”分隔。级别2由“;”分隔级别3由“,”分隔。每个级别或元素可以有0个或更多项。一个简化的例子是:Python 从嵌套列表转换为分隔字符串,python,python-3.x,Python,Python 3.x,免责声明:我是Python新手 我有一个外部服务,它以分隔字符串格式向我们发送数据。它是项目列表,最深可达3级。级别1由“|”分隔。级别2由“;”分隔级别3由“,”分隔。每个级别或元素可以有0个或更多项。一个简化的例子是: a,b;c、 d | e | f,g | h 我们有一个函数,可以将其转换为嵌套列表,这就是Python中对其进行操作的方式 def dyn_to_lists(dyn): return [[[c for c in b.split(',')] for b in a.
a,b;c、 d | e | f,g | h代码>
我们有一个函数,可以将其转换为嵌套列表,这就是Python中对其进行操作的方式
def dyn_to_lists(dyn):
return [[[c for c in b.split(',')] for b in a.split(';')] for a in dyn.split('|')]
对于上面的示例,此函数产生以下结果:
>>> dyn = "a,b;c,d|e||f,g|h;;"
>>> print (dyn_to_lists(dyn))
[[['a', 'b'], ['c', 'd']], [['e']], [['']], [['f', 'g']], [['h'], [''], ['']]]
现在,我可以编写一个循环构造来将其转换回分隔格式,但这会很混乱。是否有一种更像Python的方法来编写一个列表到(列表)
函数?它与您的其他方法类似:
def lists_to_dyn(lst):
return '|'.join(';'.join(','.join(lst3) for lst3 in lst2) for lst2 in lst)
您不需要构建中间列表,生成器表达式就足够了。谢谢@dparpyani!与我玩的东西相比,这是非常整洁的。干杯。@roippi:List的理解速度比str.join()的生成器快。
。