繁体   English   中英

如何去除不必要的间隙?

[英]How to remove unnecessary gaps?

我尝试删除行缩进和不必要的。 我尝试了 replace、lstrip() 和 strip() 函数,但它没有像我想的那样工作。 谁能帮我?

我的文本文件

 -4   1 0
 -5   2 0
  6  -3 0
 -7   1 0
 -8   2 0
  9  -3 0
-10   1 0
-11   2 0
 12  -3 0 

strip 和 lstrip 给了我这个 output

-4   1 0
 -5   2 0
  6  -3 0
 -7   1 0
 -8   2 0
  9  -3 0
-10   1 0
-11   2 0
 12  -3 0

代替(” ”,' ')

-4  1 0
 -5  2 0
 6 -3 0
 -7  1 0
 -8  2 0
 9 -3 0
-10  1 0
-11  2 0
 12 -3 0

我需要:

-4 1 0
-5 2 0
6 -3 0
-7 1 0
-8 2 0
9  -3 0
-10 1 0
-11 2 0
12 -3 0

演示文件.txt

>=3 1 2 -3 

我尝试用数字读取文件并进行编辑,然后进行数学运算我的完整代码:

import os
import sys
import numpy as np
import math


with open("demofile.txt", "r") as s:
    # read data
    f = open("demofile.txt", "r")
    lines = f.readlines()
    # input preprocessing
    p = 1
     
    for i in list(lines):

        if i[0] != '<' and i[0] != '>' and i[0] != '=':
            d = str(' '.join(i.split()))
            print(d)

        else:
            w = i.replace("=", '')
            w = w.replace(">", '')
            w = w.replace("<", '')
            w = ', '.join(w.split())
            c = np.array([w])
            c1 = [int(i) for i in c[0].replace(" ", "").split(",")]
            # insert input to array
            c1 = np.array(c1)
            # save first value in array
            frst = c1[0]
            # remove first value in array
            c1 = np.delete(c1,0)
            #print(c1)
            # count values in line
            n = len(c1)
            sest2=c1
            #print(c1)
            c1=np.array([c1]*frst)
        
            # max value from demofile
            maxv =  maxv + 1
            if p == 1:
                # last numbers
                end = frst * n + maxv
                l = np.arange(maxv, end)
                arr = l.reshape(frst, n)          
            else:
                end1 = end + frst * n
                l = np.arange(end, end1)
                arr = l.reshape(frst, n)
                end = end1
            

            arr[c1 < 0] *= -1
           # print(arr)
            arr6=np.transpose(arr)*-1 
            sest1=arr6
            #print(arr6)
            #print(sest1,'\n')
            sest = np.zeros((sest1.flatten().shape[0],2))
            sest[:,[0]] = sest1.T.flatten()[:,None]
            sest[:,[1]] = np.tile(sest2,frst)[:,None]
            sest=sest.astype(int)
            #print(sest)
            sest=str(sest).replace("[",'')
            sest=str(sest).replace("]",' 0')            
            sest = sest[:-1]
            sest=str(sest).replace("\n ",'\n')
            #sest=sest.lstrip(" ")
            print(sest)

我尝试删除行缩进和不必要的。 我尝试了 replace、lstrip () 和 strip () 函数,但没有像我想象的那样工作。 谁能帮我?

我的文本文件

 -4   1 0
 -5   2 0
  6  -3 0
 -7   1 0
 -8   2 0
  9  -3 0
-10   1 0
-11   2 0
 12  -3 0 

strip 和 lstrip 给了我这个 output

-4   1 0
 -5   2 0
  6  -3 0
 -7   1 0
 -8   2 0
  9  -3 0
-10   1 0
-11   2 0
 12  -3 0

代替(” ”,' ')

-4  1 0
 -5  2 0
 6 -3 0
 -7  1 0
 -8  2 0
 9 -3 0
-10  1 0
-11  2 0
 12 -3 0

我需要:

-4 1 0
-5 2 0
6 -3 0
-7 1 0
-8 2 0
9  -3 0
-10 1 0
-11 2 0
12 -3 0

演示文件.txt

>=3 1 2 -3 

我尝试用数字读取文件并进行编辑,然后进行数学运算我的完整代码:

import os
import sys
import numpy as np
import math


with open("demofile.txt", "r") as s:
    # read data
    f = open("demofile.txt", "r")
    lines = f.readlines()
    # input preprocessing
    p = 1
     
    for i in list(lines):

        if i[0] != '<' and i[0] != '>' and i[0] != '=':
            d = str(' '.join(i.split()))
            print(d)

        else:
            w = i.replace("=", '')
            w = w.replace(">", '')
            w = w.replace("<", '')
            w = ', '.join(w.split())
            c = np.array([w])
            c1 = [int(i) for i in c[0].replace(" ", "").split(",")]
            # insert input to array
            c1 = np.array(c1)
            # save first value in array
            frst = c1[0]
            # remove first value in array
            c1 = np.delete(c1,0)
            #print(c1)
            # count values in line
            n = len(c1)
            sest2=c1
            #print(c1)
            c1=np.array([c1]*frst)
        
            # max value from demofile
            maxv =  maxv + 1
            if p == 1:
                # last numbers
                end = frst * n + maxv
                l = np.arange(maxv, end)
                arr = l.reshape(frst, n)          
            else:
                end1 = end + frst * n
                l = np.arange(end, end1)
                arr = l.reshape(frst, n)
                end = end1
            

            arr[c1 < 0] *= -1
           # print(arr)
            arr6=np.transpose(arr)*-1 
            sest1=arr6
            #print(arr6)
            #print(sest1,'\n')
            sest = np.zeros((sest1.flatten().shape[0],2))
            sest[:,[0]] = sest1.T.flatten()[:,None]
            sest[:,[1]] = np.tile(sest2,frst)[:,None]
            sest=sest.astype(int)
            #print(sest)
            sest=str(sest).replace("[",'')
            sest=str(sest).replace("]",' 0')            
            sest = sest[:-1]
            sest=str(sest).replace("\n ",'\n')
            #sest=sest.lstrip(" ")
            print(sest)

这可以用正则表达式来完成。

import re

(...)

first_pass = re.sub(r' +', ' ', your_text, flags=re.MULTILINE) # Eliminate duplicate whitespaces
final_pass = re.sub(r'^ +', '', first_pass, flags=re.MULTILINE) # Eliminate leading whitespaces

print(final_pass)

这输出:

-4 1 0
-4 1 0
-5 2 0
6 -3 0
-7 1 0
-8 2 0
9 -3 0
-10 1 0
-11 2 0
12 -3 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM