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

时间:2011-10-07 00:54:32

标签: python text delimiter

我在下面的文字中放置分隔符时遇到问题。我想放一个'|'在文本之间以及随后的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

1 个答案:

答案 0 :(得分:2)

使用Python string methods

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

这会在有空格的地方拆分行,然后将三个数据列与| s和文本以及连接起来,然后在文本和文本之间添加最后的|。数据。