【问题标题】:pythonic way to split string into two listspythonic将字符串拆分为两个列表的方法
【发布时间】:2011-04-18 17:45:09
【问题描述】:

我有很多带有字符串对的文件,如下所示:

first_string~second_string

第一部分是要改变什么,第二部分是改变第一部分。

这些是正则表达式,我使用这些集合运行我的应用程序,以将所有修改应用于一百多个频道的脏电视时间表列表。我以前用 C# 做过,但现在我正在用 Python 重写它。

假设我有一个文本文件,其中包含许多字符串,每个字符串都在自己的行中,看起来像find_this~change_to_this。我需要得到两个列表。第一个将包含所有查找字符串,第二个将包含所有更改字符串。

让我们想象一下,我有 120 对这样的鞋。现在我将这些对分成两个列表,每个列表的大小为 120 项。一个有发现,另一个 - 变化。现在我可以通过某个索引获取两个字符串,例如 57,它会给我两个列表中的第 57 个项目,所以我得到了任何查找字符串的正确更改字符串。我发现了一些变体,但不确定哪个更好。

像这样拆分字符串集合的pythonic是什么:

first_string~second_string

使用该输入将其拆分为两个列表,其中第一个列表包含 ~ 之前的项目,第二个包含 - 之后的项目。

【问题讨论】:

  • “更好”?快点?更便宜?最喜欢鲁比? “更好”是什么意思? “漂亮”是主观的。与什么“一致”?你在用partition吗?
  • 好的,很抱歉主观要求。让我们称之为pythonic。现在有意义吗? :)
  • 并非如此。您的 first_string~second_string 示例似乎不完整。此外,您还没有显示您已经在使用的代码。这只是partitionsplit。请提供您的解决方案,以便我们对其发表评论。
  • 解决方案是什么?这是什么意思? “当然,它们需要在列表中的相同位置。所以当我想从第一个列表中获取第 6 项时,我从第二个列表中获得与原始字符串中相同的位置项”?您能否更新问题以解释这意味着什么?其他人可能会从这个问题中受益。如果问题更清楚会有所帮助。

标签: python string


【解决方案1】:
x = ["c~d", "e~f", "g~h"]
a, b = zip(*(s.split("~") for s in x))
print a
print b

打印

('c', 'e', 'g')
('d', 'f', 'h')

【讨论】:

  • 如何将它们(ab)作为列表而不是元组?我试过zip(*[s.split("~") for s in x]),但它仍然将它们作为元组返回
  • @NagabhushanSN a, b = map(list, zip(*(s.split("~") for s in x)))
猜你喜欢
  • 2020-01-19
  • 1970-01-01
  • 2017-06-26
  • 2011-03-31
  • 1970-01-01
  • 2012-08-02
  • 1970-01-01
  • 1970-01-01
  • 2011-06-14
相关资源
最近更新 更多