Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,如何在数字和文本之间放置分隔符?_Python_Text_Delimiter - Fatal编程技术网

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

在Python中,如何在数字和文本之间放置分隔符?,python,text,delimiter,Python,Text,Delimiter,在以下文本中放置分隔符时遇到问题。我想在文本之间以及随后的3个数字之间加一个“|”。问题是,有时数字实际上是破折号,表示0(即-,而不是0) 到目前为止,我可以使用以下代码获得大多数“|”分隔符: 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

在以下文本中放置分隔符时遇到问题。我想在文本之间以及随后的3个数字之间加一个“|”。问题是,有时数字实际上是破折号,表示0(即-,而不是0)

到目前为止,我可以使用以下代码获得大多数“|”分隔符:

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行的第二个之前有另一个分隔符,而不在一个和之间放置分隔符。在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
使用Python:


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

这些选项卡是原始文件中列之间的吗?是否需要保留列之间的空格?这是不必要的。我只需要将第一列作为文本列,然后将其余的“number”列分隔开。如果有必要,可以删除空格,但我希望保留文本列中的间距(例如,一行文本,而不是Alineoftext)。您是否有一行五列,其余四列?或者它们都有相同的列数?有时有超过3列的行。但它们很少。如果可以很容易地为只有3列的行放置分隔符,我认为手动检查有4列的行不会花费太多精力。这非常有效。我想我只需要手动检查那些有4列的行。非常感谢。
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
for line in text.splitlines():
    line = line.split()
    if line:
        print '|'.join((' '.join(line[:-3]), '|'.join(line[-3:])))