저는 지난 8 개월 동안 파이썬으로 만 프로그래밍 했으므로, 아마 파이썬에 대한 noob 접근 방식을 생각해보십시오.파일에서 특정 긴 줄의 텍스트를 제거합니다.
내 문제는 다음과 같습니다. 누군가가 나를 도와 줄 수 있기를 바랍니다.
는이 같은 인스턴스 뭔가 (그냥 싹둑)를 들어, 파일에 데이터를 많이 가지고 :
SWITCH MGMT IP;SWITCH HOSTNAME;SWITCH MODEL;SWITCH SERIAL;SWITCH UPTIME;PORTS NOT IN USE
10.255.240.1;641_HX_3560X;WS-C3560X-24P-S;FDO1601V031;12 weeks, 3 days, 23 hours, 33 minutes;1
10.255.240.7;641_HX_LEFT_2960x;WS-C2960X-24PS-L;FOC1750S2E5;12 weeks, 4 days, 7 minutes;21
10.255.240.8;641_UX_BASEMENT_2960x;WS-C2960X-24PS-L;FOC1750S2AG;12 weeks, 4 days, 7 minutes;12
10.255.240.9;641_UX_SPECIAL_2960x;WS-C2960X-24PS-L;FOC1750S27M;12 weeks, 4 days, 8 minutes;25
10.255.240.2;641_UX_OFFICE_3560;WS-C3560-8PC-S;FOC1202U24E;2 years, 30 weeks, 3 days, 16 hours, 43 minutes;2
10.255.240.3;641_UX_SFO_2960x;WS-C2960X-24PS-L;FOC1750S2BR;12 weeks, 4 days, 7 minutes;14
10.255.240.65;641_HX_3560X;WS-C3560X-24P-S;FDO1601V031;12 weeks, 3 days, 23 hours, 34 minutes;1
10.255.240.5;641_HX_RIGHT_2960s;WS-C2960S-24PS-L;FOC1627X1BF;12 weeks, 4 days, 12 minutes;16
10.255.240.6;641_HX_LEFT_2960x-02;WS-C2960X-24PS-L;FOC1750S2C4;12 weeks, 4 days, 7 minutes;15
10.255.240.4;641_UX_BASEMENT_2960s;WS-C2960S-24PS-L;FOC1607Z27T;12 weeks, 4 days, 8 minutes;3
10.255.240.62;641_UX_OFFICE_3560CG;WS-C3560CG-8PC-S;FOC1646Y0U2;15 weeks, 5 days, 12 hours, 15 minutes;6
나는 일련 번호가 더 발생하면 파일의 모든 데이터를 실행하고 확인하려면 한번 이상. 그것이 발견되면 중복을 제거하고 싶습니다. 결과에 동일한 스위치 또는 라우터가 여러 번 포함될 수있는 이유는 관리 할 수있는 여러 개의 레이어 3 인터페이스가있을 수 있기 때문입니다.
위의 예에서 그렇습니다. 데이터를 살펴본 후에는 다음 줄을 제거해야합니다.
10.255.240.65;641_HX_3560X;WS-C3560X-24P-S;FDO1601V031;12 weeks, 3 days, 23 hours, 34 minutes;1
파일의 두 번째 줄에 이미 동일한 스위치와 일련 번호가 포함되어 있습니다.
나는 이것을 알아 내기 위해 며칠을 보냈다. 어떻게 달성 할 수 있었는지, 두통을주기 시작했다.
내 기본 코드는 다음과 같습니다
if os.stat("output.txt").st_size != 0:
with open('output.txt','r') as file:
header_line = next(file) # Start from line 2 in the file.
data = [] # Contains the data from the file.
sn = [] # Contains the serial numbers to check up against.
ok = [] # Will contain the clean data with no duplicates.
data.append(header_line.split(";")) # Write the head to data.
for line in file: # Run through the file data line for line.
serialchk = line.split(";") # Split the data into a list
data.append(serialchk) # Write the data to data list.
sn.append(serialchk[3]) # Write the serial number to sn list.
end = len(data) # Save the length of the data list, so i can run through the data
i = 0 # For my while loop, so i know when to stop.'
while i != end: # from here on out i am pretty lost on how to achieve my goal.
found = 0
for x in range(len(data)):
if sn[i] == data[x][3]:
found += 1
print data[x]
ok.append(data[x])
elif found > 1:
print "Removing:\r\n"
print data[x-1]
del ok[-1]
found = 0
i += 1
이 할 수있는 더 파이썬 방법이 있나요? 나는 모든 재능있는 사람들과 여기서 확신 할 수있다. 누군가가 나에게 이런 일이 일어나는 방법에 대한 단서를 줄 수있다.
대단히 감사합니다.
먼저 [csv 모듈] (https://docs.python.org/3/library/csv.html)을 확인해 보겠습니다. – Kendas