【问题标题】:Delete a element using regex from list in python [duplicate]使用正则表达式从python列表中删除元素[重复]
【发布时间】:2019-03-15 06:15:13
【问题描述】:

我在 python 中有一个列表

a=['one_foo','two_foo','bar_foo']

预期输出:

['one','two','bar']

我尝试先将列表转换为字符串,然后使用正则表达式

import re
re.sub("_.*$","", str(a))

我知道将列表转换为字符串是完成此任务的不正确方法,可能有什么优雅的方法而不将其转换为字符串?

【问题讨论】:

  • 您是否依赖于正则表达式或者您愿意考虑其他解决方案?
  • 没有。我们也可以使用其他解决方案
  • 你想用"test_foo_bar"这样的字符串做什么?结果应该是"test_foo" 还是"test"
  • @PM2Ring 在这种情况下,结果应该是“test_foo”(或者只是删除最后一个包含“_”的字符串)

标签: python regex string list


【解决方案1】:

您可以使用str.rsplit 的列表推导:

a = ['one_foo', 'two_foo', 'bar_foo']

res = [x.rsplit('_', 1)[0] for x in a]

['one', 'two', 'bar']

一般来说,正则表达式解决方案的性能往往不如 str 方法进行类似的操作。

【讨论】:

  • 完美解决方案!但rsplit 与“拆分”有何不同
  • split 从左边开始工作。 rsplit 从右边工作。 1 参数意味着我们只执行一次拆分。
猜你喜欢
  • 2012-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-14
  • 2013-02-08
相关资源
最近更新 更多