Python 如何通过新行和冒号解析一行?

Python 如何通过新行和冒号解析一行?,python,regex,split,Python,Regex,Split,我有类似的文本。我想用新行和冒号分开。现在我正在用新行分割。我正在使用这个代码 `data= data.split('\n') 和它的给予。你能帮忙吗?谢谢该方法只接受一个拆分器。这就排除了冒号或换行符上的拆分。您可以通过以下方式克服此限制: data = data.replace(':', '\n').split('\n') # split on newlines and colons 您还可以尝试使用该函数对拆分进行更细粒度的控制: >>> import re &g

我有类似的文本。我想用新行和冒号分开。现在我正在用新行分割。我正在使用这个代码

`data= data.split('\n')
和它的给予。你能帮忙吗?谢谢

该方法只接受一个拆分器。这就排除了冒号或换行符上的拆分。您可以通过以下方式克服此限制:

data = data.replace(':', '\n').split('\n')   # split on newlines and colons
您还可以尝试使用该函数对拆分进行更细粒度的控制:

>>> import re
>>> s = 'abc:def\nghi'
>>> re.split(r'\:|\n', s)
['abc', 'def', 'ghi']
该方法只接受一个拆分器。这就排除了冒号或换行符上的拆分。您可以通过以下方式克服此限制:

data = data.replace(':', '\n').split('\n')   # split on newlines and colons
您还可以尝试使用该函数对拆分进行更细粒度的控制:

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

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


也许你可以。首先剥离行:这将删除空格。

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


也许你可以。首先剥去线条:这将删除空格。

这应该可以做到

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

data = filter(None, data)
编辑:Simon的答案将产生相同的结果,同时是一个更干净的解决方案

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

这应该能奏效

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

data = filter(None, data)
编辑:Simon的答案将产生相同的结果,同时是一个更干净的解决方案

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

它正按照你的要求做,但它充满了标签。通过条带拆下卡舌:

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

这仍然会留下一些空行,因此您可能也希望去掉这些空行:

lines = filter(None, lines)

它正按照你的要求做,但它充满了标签。通过条带拆下卡舌:

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

这仍然会留下一些空行,因此您可能也希望去掉这些空行:

lines = filter(None, lines)

\t是标签。要稍微清理一下,请尝试以下方法:

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

它将删除空行和带空白的选项卡。要稍微清理一下,请尝试以下方法:

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

它将删除空行并删除空白

,这一点都不奇怪。它完全按照你的要求进行。@马特·鲍尔为什么要显示\t\t\t\t。?我也试过stip,但运气不好。因为你的输入文件中一定有很多制表符。示例文本不再可用了…这一点也不奇怪。它完全按照你的要求进行。@马特·鲍尔为什么要显示\t\t\t\t。?我也尝试了stip,但运气不好。因为您的输入文件中一定有很多制表符。示例文本不再可用…@Simon我已删除了.split':'。因此,结果是[‘艺术家:’,‘音乐:拉曼娜·戈古拉’]。现在我能读一下艺术家和音乐的价值吗?thanks@Simon我已删除.split':'。因此,结果是[‘艺术家:’,‘音乐:拉曼娜·戈古拉’]。现在我能读一下艺术家和音乐的价值吗?谢谢