如何用新的线和冒号解析一条线?

时间:2011-11-18 17:02:20

标签: python regex split

我有this这样的文字。我希望按New LineColons进行拆分。现在我正在按New Lines拆分。我正在使用此代码。

`data= data.split('\n')

及其给予strange output。你能帮忙吗?感谢

5 个答案:

答案 0 :(得分:8)

\ t是标签。要稍微清理一下,试试这个:

data = [line.strip().split(':') for line in data.split('\n') if line.strip()]

它将删除空行并删除空格

答案 1 :(得分:7)

它正在做你正在问的问题,但它充满了标签。通过strip()

删除标签
lines = data.split('\n')
lines = [line.strip() for line in lines]

你应该看到更像你期待的东西。

那仍然会留下一些空白,所以也许你也想剥掉那些:

lines = filter(None, lines)

答案 2 :(得分:3)

你的输出有多奇怪?我的意思是,有很多表格\t和白色空格,但你能解释一下哪些不适合你的需要吗?

也许你可以先.strip()行:这会删除空格。

答案 3 :(得分:0)

str.split()方法只接受一个分割器。这样就无法在冒号或换行符上进行拆分。您可以通过以下方式克服此限制:

data = data.replace(':', '\n').split('\n')   # split on newlines and colons

您还可以尝试使用re.split()函数进行更精细的分割控制:

>>> import re
>>> s = 'abc:def\nghi'
>>> re.split(r'\:|\n', s)
['abc', 'def', 'ghi']

答案 4 :(得分:0)

这应该可以解决问题

data = list(
    line.strip().split(":") for line in data.split("\n")
)

data = filter(None, data)

编辑:西蒙的答案会产生相同的结果,而作为一个更清洁的"溶液

data = list(
    line.strip().split(":") for line in data.split("\n") if line.strip()
)