我在下面的文字中放置分隔符时遇到问题。我想放一个'|'在文本之间以及随后的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
答案 0 :(得分:2)
使用Python string methods:
for line in text.splitlines():
line = line.split()
if line:
print '|'.join((' '.join(line[:-3]), '|'.join(line[-3:])))
这会在有空格的地方拆分行,然后将三个数据列与|
s和文本以及连接起来,然后在文本和文本之间添加最后的
|
。数据。