【问题标题】:Splitting a string using ':' delimiter(python) [closed]使用':'分隔符(python)拆分字符串[关闭]
【发布时间】:2016-07-05 18:27:57
【问题描述】:

我是 Python 新手。

我正在尝试使用 ':' 分隔符将字符串拆分如下:

例子:

my_string = a/bc/rsd: Mar 4 10:13:23.78 : asgehaa:10/251[162]:%bavst{142}
new_list = my_string.split(":") 

这应该给出一个这样的列表:

new_list = ['a/bc/rsd','Mar 4 10:13:23.78','asgehaa','10/251[162]','%bavst{142}']

相反,它也拆分了 date ,结果列表如下所示:

new_list = ['a/bc/rsd','Mar 4 10','13','23.78','asgehaa','10/251[162]','%bavst{142}']

我不想拆分日期。我可以知道一个解决方法来实现这个吗?

【问题讨论】:

  • 是什么让你认为 Python 应该能够猜出你想要分割的哪些冒号?
  • 确实,时间中的冒号与字符串中的任何其他冒号一样都是冒号。
  • 它在每个: 上拆分。它还应该如何工作?
  • 我投票结束这个问题作为离题,因为这个问题缺乏最少的研究或试图理解语言的行为。
  • 请照原样复制您的代码。例如,第一行不是有效的 Python 语法。

标签: python string list split


【解决方案1】:

要遵循 cmets,尚不清楚您将如何让 Python 知道在哪里使用 : 作为分隔符以及将其保留在哪里。一种选择,取决于您拥有的实际输入数据,可能是使用re.split() 将字符串按: 拆分,: 前面有一个非数字字符

>>> re.split(r"(?<!\d):", my_string)
['a/bc/rsd', ' Mar 4 10:13:23.78 ', ' asgehaa', '10/251[162]', '%bavst{142}']

其中(?&lt;!\d)negative lookbehind - 查找不是数字​​的前一个字符。

【讨论】:

  • @cricket_007 我想我解决了这个问题。虽然这在我看来就像一座沙子做的城堡:)
猜你喜欢
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
  • 2021-03-30
  • 1970-01-01
  • 2011-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多