저는 파이썬으로 작성하는 스크립트에 어려움을 겪고 있습니다. 나는 누군가가 나를 도울 수 있기를 바랍니다. 내 프로그램에서 일련의 문자 사이에 줄을 읽고, 줄의 순서를 반대로 변경 한 다음 새 줄에 쓰기를 원합니다. 아래 텍스트에서 "G01X"다음에 오는 숫자는 오름차순과 내림차순입니다. 범위는 0.001 ~ 149.999입니다. 문자열은 "G01Y"로 구분됩니다. "G01Y"가 나타나면 정렬 순서가 반대로됩니다. 이 값을 항상 내려 가게하는 스크립트를 만들고 싶습니다.문자열 간의 행 순서 반전
정말로 다른 모든 그룹 A-B, C-D의 정렬 순서를 반전시키는 질문입니다.
G01Y 값이 나타날 때마다 0.25 씩 증가합니다. 아마도 이것이 그룹을 식별하는 가장 좋은 방법 일 것입니다. 나는 다소 서투른 접근법을 취하고 [::2]
을 사용하여 G01Y의 '기타 모든 모양'을 식별하려고 시도했습니다. 이것이 최선의 방법은 아니라고 확신합니다. 지금까지
내 코드 :
with open('Source.nc') as infile, open('Output.nc', 'w') as outfile:
do_reverse = False
lines_to_reverse = []
strings_A = ("G01Y")
strings_B = ("G01Y"[::2])
for line in infile:
if (x in line for x in strings_A):
do_reverse = False
outfile.writelines(reversed(lines_to_reverse))
outfile.writelines(line)
continue
if do_reverse:
lines_to_reverse.append(line)
continue
else:
outfile.writelines(line)
if (x in line for x in strings_B):
do_reverse = True
lines_to_reverse = []
소스 코드 : 그들의 행 번호의 부정적인와 dict
에 라인을 넣어하는 것이 작업을 수행하는
N10 G17 G21 G90
N20 '2014_12_08_Banding_Test_4_250um_Stepover
N30 M3 S1
N40G00X0.000Y0.000Z17.000
N50 G00X0.001Y0.001Z17.000
N60 G01Z0.000F3900.0
N70 G01X0.251
N80 G01X149.999
N90 G01Y0.251
N100 G01X149.749
N110 G01X149.499Z-8.169
N120 G01X148.249Z-8.173
N130 G01X146.999Z-8.183
N140 G01X145.499Z-8.201
N150 G01X143.999Z-8.226
...
N3130 G01X0.001
N3140 G01Y0.501
N3150 G01X0.251
N3160 G01X0.501Z-15.867
N3170 G01X0.751Z-15.795
N3180 G01X1.251Z-15.639
N3190 G01X1.751Z-15.471
N3200 G01X2.251Z-15.290
...
N6190 G01X149.999
N6200 G01Y0.751
N6210 G01X149.749
N6220 G01X149.499Z-8.166
N6230 G01X147.999Z-8.169
N6240 G01X146.499Z-8.179
N6250 G01X144.749Z-8.201
N6260 G01X143.249Z-8.226
...
N9260 G01X0.001
N9270 G01Y1.001
N9280 G01X0.251
N9290 G01X0.501Z-15.865
N9300 G01X0.751Z-15.792
N9310 G01X1.251Z-15.635
N9320 G01X1.751Z-15.463
N9330 G01X2.251Z-15.280
...
N12320 G01X149.999
N12330 G01Y1.251
N12340 G01X149.749
N12350 G01X149.499Z-8.164
N12360 G01X147.999Z-8.163
N12370 G01X146.249Z-8.173
N12380 G01X144.749Z-8.190
N12390 G01X143.249Z-8.213
...
N15380 G01X0.001
N15390 G01Y1.501