简体   繁体   English

n级嵌套元组数据,以逗号分隔带引号的字符串

[英]n-level nested tuple data to comma separated string with surrounding quotes

I have below string: 我有下面的字符串:

companies = [(('Paramount Pictures Corporation (Canada)',),), (('20th Century Fox Home Entertainment',),), (('Shanghai Epic Music Entertainment',),), (('Paramount Pictures',),), (('Fox Filmes do Brasil',),), (('Gativideo',),), (('Abril V\xc3\xaddeo',),), (('20th Century Fox Netherlands',),), (('20th Century Fox Home Entertainment',),), (('Nelonen',),), (('20th Century Fox',),), (('Finnkino',),), (('Modhumita Movies',),), (('Twentieth Century Fox Home Entertainment',),), (('Egmont Entertainment',),), (('National Broadcasting Company (NBC)',),), (('MTV3',),), (('Bandur Film',),), (('Westec Media Limited',),), (('20th Century Fox Home Entertainment',),), (('Turner Classic Movies (TCM)',),), (('Lightstorm Entertainment',),), (('20th Century Fox',),), (('Pioneer Entertainment',),), (('Odeon',),), (('FS Film',),), (('Filmes Castello Lopes',),), (('Paramount Home Entertainment',),), (('Big Picture 2 Films',),), (('Hispano Foxfilms S.A.E.',),), (('TV3 Norge',),), (('Paramount Home Video',),), (('Warner Bros.',),), (('Sub',),), (('20th Century Fox de Argentina',),), (('Twentieth Century Fox Film Corporation',),), (('UGC-Fox Distribution (UFD)',),), (('PFC Vid\xc3\xa9o',),), (('Columbia TriStar Egmont Film Distributors',),), (('20th Century Fox Home Entertainment',),), (('Syrena Entertainment Group',),), (('AVA',),), (('Forum Cinemas',),)]

I would like to convert it into a string which looks like: 我想将其转换为如下所示的字符串:

 companies = 'Paramount Pictures Corporation (Canada)', '20th Century Fox Home Entertainment', 'Shanghai Epic Music Entertainment', 'Twentieth Century Fox Film Corporation',  ....

I asked this question just 2 days ago which is similar but the solutions provided there do not work for the above string. 我只是在两天前问了这个问题,这是相似的,但是那里提供的解决方案不适用于上面的字符串。

For each item in companies what you want is item[0][0] . 对于companies每个item ,您想要的是item[0][0] using a generator expression you can do: 使用generator expression您可以执行以下操作:

res = (item[0][0] for item in companies)

To get the final result, apply tuple() like this: 要获得最终结果,请像下面这样应用tuple()

tuple(res)

Output: 输出:

>>> companies = [(('Paramount Pictures Corporation (Canada)',),), (('20th Century Fox Home Entertainment',),), (('Shanghai Epic Music Entertainment',),)]
>>> 
>>> res = (item[0][0] for item in companies)
>>> res
<generator object <genexpr> at 0x023AAE68>
>>> tuple(res)
('Paramount Pictures Corporation (Canada)', '20th Century Fox Home Entertainment', 'Shanghai Epic Music Entertainment')

Once you defined the nested get [0] as such: 一旦定义了嵌套的get [0]

first = lambda x: first(x[0]) if type(x)==tuple else x

It will work no matter what is the depth of the tuple nesting. 无论元组嵌套的深度是多少,它都将起作用。

All we have left is to apply it to the companies list 我们剩下的就是将其应用于companies列表

companies = [(('Paramount Pictures Corporation (Canada)',),), (('20th Century Fox Home Entertainment',),), (('Shanghai Epic Music Entertainment',),), (('Paramount Pictures',),), (('Fox Filmes do Brasil',),), (('Gativideo',),), (('Abril V\xc3\xaddeo',),), (('20th Century Fox Netherlands',),), (('20th Century Fox Home Entertainment',),), (('Nelonen',),), (('20th Century Fox',),), (('Finnkino',),), (('Modhumita Movies',),), (('Twentieth Century Fox Home Entertainment',),), (('Egmont Entertainment',),), (('National Broadcasting Company (NBC)',),), (('MTV3',),), (('Bandur Film',),), (('Westec Media Limited',),), (('20th Century Fox Home Entertainment',),), (('Turner Classic Movies (TCM)',),), (('Lightstorm Entertainment',),), (('20th Century Fox',),), (('Pioneer Entertainment',),), (('Odeon',),), (('FS Film',),), (('Filmes Castello Lopes',),), (('Paramount Home Entertainment',),), (('Big Picture 2 Films',),), (('Hispano Foxfilms S.A.E.',),), (('TV3 Norge',),), (('Paramount Home Video',),), (('Warner Bros.',),), (('Sub',),), (('20th Century Fox de Argentina',),), (('Twentieth Century Fox Film Corporation',),), (('UGC-Fox Distribution (UFD)',),), (('PFC Vid\xc3\xa9o',),), (('Columbia TriStar Egmont Film Distributors',),), (('20th Century Fox Home Entertainment',),), (('Syrena Entertainment Group',),), (('AVA',),), (('Forum Cinemas',),)]
companies = map(first,companies)

And if you want to concatenate it all to one string: 如果要将它们全部连接到一个字符串:

s = ",".join(companies)

如果只在寻找一个字符串作为输出,这应该可以工作:

str = ", ".join(["'"+company[0][0]+"'" for company in companies])

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM