有什么办法可以拆分此列表?

时间:2019-10-17 17:03:17

标签: python string list split

这是我的字符串:

"1.Movie1|Votes:2,147,833| Gross:$28.34M  2.Movie2|Votes:42,473| 
3.Movie3|Votes:23,439| Gross:$0,27M  4.Movie4|Votes:20,940"

最终目标是使用函数.split(“ |”)并安排好所有内容。问题在于某些电影没有“ Gross:”。

我希望我的字符串看起来像这样:

"1.Movie1|Votes:2,147,833| Gross:$28.34M|2.Movie2|Votes:42,473|3.Movie3| 
Votes:23,439| Gross:$0,27M|4.Movie4|Votes:20,940|"

我使用.replace添加了更多的“ |”使其更容易格式化。我也尝试使用.split(“ M”),但由于某些电影没有毛重,因此会将两部电影放在一起。

3 个答案:

答案 0 :(得分:0)

在这种情况下,我强烈建议您使用字典而不是列表。但是,如果您对按自己的方式解析数据非常感兴趣,那么我找到了一种解决方法,可以对所有数据不起作用,但它可以完美地工作在给定的样本数据中很好。

a="1.Movie1|Votes:2,147,833| Gross:$28.34M  2.Movie2|Votes:42,473| 3.Movie3|Votes:23,439| Gross:$0,27M  4.Movie4|Votes:20,940"
c="|".join(a.split("  "))+"|"
print(c)

希望这会有所帮助

答案 1 :(得分:0)

您可以使用下面的拆分和列表理解来实现

s = "1.Movie1|Votes:2,147,833| Gross:$28.34M  2.Movie2|Votes:42,473| 3.Movie3|Votes:23,439| Gross:$0,27M  4.Movie4|Votes:20,940"

"|".join(["|".join([sp2 for sp2 in sp1.split("|") if sp2!='']) 
          for sp1 in s.split(" ") if sp1!='']) + "|"

结果

'1.Movie1|Votes:2,147,833|Gross:$28.34M|2.Movie2|Votes:42,473|3.Movie3|Votes:23,439|Gross:$0,27M|4.Movie4|Votes:20,940|'

答案 2 :(得分:0)

我希望这样做会

string = "1.Movie1|Votes:2,147,833| Gross:$28.34M  2.Movie2|Votes:42,473| 3.Movie3|Votes:23,439| Gross:$0,27M  4.Movie4|Votes:20,940"

string = string.replace(' ','|').replace('||G','| G').replace('||','|')

这是考虑到您在'|'之间需要额外的空格以及总值的'G',如果输出中不需要此多余的空间,则可以从代码中删除replace('||G','| G')部分以获得所需的结果