[英]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.