如何在Python中在数字和文本之间放置分隔符?

3
我在以下文本中遇到了分隔符的问题。我想在文本之间以及接下来的三个数字之间放置“|”。问题是有时数字实际上是破折号,表示0(即--而不是0)。
text = """
A line of text    85         25,653   -75,321
Another - line   5,432     (5,353)     --
Another one      23        -0-       86
One -- more   -- -0- 34 25
"""

目前为止,我能够通过以下代码获取大多数'|'分隔符:

text = re.sub(r'\s[(](\d)', '|(\\1', text)
text = re.sub(r'\s(\d)', '|\\1', text)
text = re.sub(r'\s-(\d)', '|-\\1', text)

这将输出:
A line of text   |85        |25,653  |-75,321
Another - line  |5,432    |(5,353)     --
Another one     |23       |-0-      |86
One -- more   --|-0-|34|25

然而,在第4行的第二个--之前,我希望有另一个分隔符,而不是在One和--之间放置分隔符。有没有办法在Python中实现这个要求?

我希望最终输出为:

A line of text   |85        |25,653  |-75,321
Another - line  |5,432    |(5,353)     |--
Another one     |23       |-0-      |86
One -- more   |--|-0-|34|25

原始文件中的列之间是用的制表符吗? - agf
1
你需要保留列之间的空格吗? - agf
不需要那样做。我只需要第一列成为文本列,然后将其余的“数字”列分隔。如果必要,可以删除空格,但我希望保留文本列内的间距(例如,文本行而不是Alineoftext)。 - myname
你的数据表中实际上是有一行有五列,其余行都只有四列吗?还是所有行的列数都相同? - agf
如果列数不总是相同的,并且列之间有可变数量的空格,而且列中可能包含空格,则无法确定列的边缘在哪里以及哪些只是列中的空格,这是_不可能_的。 - agf
显示剩余2条评论
1个回答

2
使用Python的字符串方法:

使用Python的字符串方法

for line in text.splitlines():
    line = line.split()
    if line:
        print '|'.join((' '.join(line[:-3]), '|'.join(line[-3:])))

这将在任何空格处拆分该行,然后使用|连接三个数据列和文本,然后使用连接文本,最后在文本和数据之间添加一个最终的|


那个完美地运行了。我猜我只能手动检查那些有4列的行了。非常感谢你。 - myname

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接