【问题标题】:How to split a string and only keep the texts after the separator? [duplicate]如何拆分字符串并仅保留分隔符后的文本? [复制]
【发布时间】:2019-11-25 09:53:30
【问题描述】:
mylist = ['Arthur Morgan Game Name: Red Dead Redemption2',
'Zealda',
'Geralt Game Name:Witcher3','Uncharted4']

我在上面有一个字符串列表,我想首先按“游戏名称:”进行拆分,并且只保留分隔符之后的文本。我试过[w.split('Game Name: ') for w in mylist]

下一步是什么?

预期结果:

['Red Dead Redemption2','Zealda','Witcher3','Uncharted4']

谢谢!

【问题讨论】:

  • 您依赖于字符串中存在的单个分隔符而不考虑 2 或更多。请不要为 737 Max 设计软件。

标签: python regex list split


【解决方案1】:
[w.split('Game Name:')[-1] for w in mylist]

编辑根据Martijn Pieters partition() 更快,即使您需要检查空字符串。

[w.partition('Game Name:')[-1] or w for w in mylist]

【讨论】:

  • 你没有在游戏名称中考虑:w.partition(':')[-1]会更快。
  • 感谢您的帮助@wilkben
  • @MartijnPieters 虽然分区稍微快一些,但它对于不包含分隔符的字符串有不同的结果。添加的检查分隔符是否存在将抵消任何性能优势。
  • @wilkben:如果这是一个问题,它取决于你想要什么。并且测试分区是否为空(第二个元素)仍然很快。
  • 我创建了一个计时赛:stackoverflow.com/a/57064170。剧透警报:str.partition() 在各个方面都获胜。
【解决方案2】:
mylist = ['Arthur Morgan Game Name: Red Dead Redemption2',
'Zealda',
'Geralt Game Name:Witcher3','Uncharted4']

gameNames = [w.split(":")[-1].strip(" ") for w in mylist]
print(gameNames)

返回:

['Red Dead Redemption2', 'Zealda', 'Witcher3', 'Uncharted4']

【讨论】:

  • 你没有在游戏名称中考虑:w.partition(':')[-1]会更快。你可以直接使用.strip(),不带参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-26
  • 2022-11-03
  • 1970-01-01
  • 2019-10-03
  • 2011-04-16
  • 2011-01-09
相关资源
最近更新 更多