쉼표를 구분 기호로 사용하여 CSV 파일에서 정규식을 사용하여 데이터 열의 위치를 변경하는 방법은 무엇입니까?

늑대

나는 이것, 거의 마감일을 포기하고있다. 저는 이번 여름 정규식 수업에 등록했습니다 (내 인생의 가장 큰 실수). 그리고 우리는이 주제 (오래된 소프트웨어를 선택하고 업데이트하는 부분)를 가지고 있습니다. 몬스터 속성 데이터베이스의 .txt 문서?

어쨌든 논리는 각 변수가 열 / 키를 나타내고 각 열은 쉼표로 구분됩니다. 그리고 사용 가능한 도구를 사용하여 열을 삭제 / 추가 / 위치 변경해야합니다 (정규식은 내가 아는 유일한 방법이 도움이 될 수 있습니까? 아는 것이 있습니까?)

다음은 이전 형식입니다.

ID,Name,JName,LV,HP,SP,EXP,JEXP,Range1,ATK1,ATK2,DEF,MDEF,STR,AGI,VIT,INT,DEX,LUK,Range2,Range3,Scale,Race,Element,Mode,Speed,ADelay,aMotion,dMotion,Drop1id,Drop1per,Drop2id,Drop2per,Drop3id,Drop3per,Drop4id,Drop4per,Drop5id,Drop5per,Drop6id,Drop6per,Drop7id,Drop7per,Drop8id,Drop8per,MEXP,ExpPer,MVP1id,MVP1per,MVP2id,MVP2per,MVP3id,MVP3per

먼저 마지막 열에서 7 번째 열을 삭제합니다 (모든 ExpPer 항목 삭제 ).

결과 :
ID,Name,JName,LV,HP,SP,EXP,JEXP,Range1,ATK1,ATK2,DEF,MDEF,STR,AGI,VIT,INT,DEX,LUK,Range2,Range3,Scale,Race,Element,Mode,Speed,ADelay,aMotion,dMotion,Drop1id,Drop1per,Drop2id,Drop2per,Drop3id,Drop3per,Drop4id,Drop4per,Drop5id,Drop5per,Drop6id,Drop6per,Drop7id,Drop7per,Drop8id,Drop8per,MEXP,MVP1id,MVP1per,MVP2id,MVP2per,MVP3id,MVP3per

둘째 , JName 열을 다음 열에 복제합니다 .

결과 :
ID,Name,JName,Jname,LV,HP,SP,EXP,JEXP,Range1,ATK1,ATK2,DEF,MDEF,STR,AGI,VIT,INT,DEX,LUK,Range2,Range3,Scale,Race,Element,Mode,Speed,ADelay,aMotion,dMotion,Drop1id,Drop1per,Drop2id,Drop2per,Drop3id,Drop3per,Drop4id,Drop4per,Drop5id,Drop5per,Drop6id,Drop6per,Drop7id,Drop7per,Drop8id,Drop8per,MEXP,MVP1id,MVP1per,MVP2id,MVP2per,MVP3id,MVP3per

셋째 , 마지막 7 개 열을 당겨 31 번째 열부터 시작 ...,dMotion,Drop1id,Drop1per,...합니다....,dMotion,MEXP,...,MVP3per,Drop1id,...

결과 :
ID,Name,JName,Jname,LV,HP,SP,EXP,JEXP,Range1,ATK1,ATK2,DEF,MDEF,STR,AGI,VIT,INT,DEX,LUK,Range2,Range3,Scale,Race,Element,Mode,Speed,ADelay,aMotion,dMotion,MEXP,MVP1id,MVP1per,MVP2id,MVP2per,MVP3id,MVP3per,Drop1id,Drop1per,Drop2id,Drop2per,Drop3id,Drop3per,Drop4id,Drop4per,Drop5id,Drop5per,Drop6id,Drop6per,Drop7id,Drop7per,Drop8id,Drop8per

넷째, 마지막으로 마지막 열에 , 0,0, DONE, 1을 추가합니다 .

결과 :
ID,Name,JName,Jname,LV,HP,SP,EXP,JEXP,Range1,ATK1,ATK2,DEF,MDEF,STR,AGI,VIT,INT,DEX,LUK,Range2,Range3,Scale,Race,Element,Mode,Speed,ADelay,aMotion,dMotion,MEXP,MVP1id,MVP1per,MVP2id,MVP2per,MVP3id,MVP3per,Drop1id,Drop1per,Drop2id,Drop2per,Drop3id,Drop3per,Drop4id,Drop4per,Drop5id,Drop5per,Drop6id,Drop6per,Drop7id,Drop7per,Drop8id,Drop8per,0,0,DONE,1

따라서 정규식 검색 / 바꾸기 도구를 얼마든지 실행
하면 원본은 다음과 같습니다.

1052,ROCKER,Rocker,9,198,0,20,16,1,24,29,5,10,1,9,18,10,14,15,10,12,1,4,22,129,200,1864,864,540,940,5000,909,5500,2298,4,1402,80,520,10,752,5,703,3,4021,10,0,0,0,0,0,0,0,0

결과는 다음과 같습니다.

1052,ROCKER,Rocker,Rocker,9,198,0,20,16,1,24,29,5,10,1,9,18,10,14,15,10,12,1,4,22,129,200,1864,864,540,0,0,0,0,0,0,0,940,5000,909,5500,2298,4,1402,80,520,10,752,5,703,3,4021,10,0,0,DONE,1

누군가가 나를 도울 수 있기를 바랍니다.이 오래된 데이터베이스 .txt 파일에는 500 개 이상의 괴물이 있습니다.

감사!

Mofi

Microsoft Excel에는 텍스트 파일에서 빈 Excel 워크 시트로 CSV 형식의 데이터를 가져 오는 텍스트 가져 오기 마법사 가 있습니다. 이 마법사는 작은 CSV 파일을 사용하여 데이터를로드하고 다음 데이터 열을 삭제 / 이동 / 복사하고 마지막으로 수정 된 데이터를 CSV 형식으로 다시 파일로 내보내거나 저장할 수 있습니다.

그러나 문제는 정규식이있는 텍스트 편집기를 사용하여 CSV 파일의 형식을 다시 지정하는 것이 었습니다.

Perl 정규식 엔진을 선택하여 UltraEdit v21.20을 사용했지만 아래는 Perl 정규식을 지원하는 모든 텍스트 편집기에서 작동합니다. 정규식 검색 및 바꾸기 문자열은 Python에서도 작동해야합니다.

중요 :
아래 정규식은 CSV 파일에 큰 따옴표 값에 쉼표가없는 경우에만 작동합니다.

먼저 마지막 열에서 7 번째 열을 삭제합니다 (모든 ExpPer 항목 삭제 ).

검색 :   ,[^,\r\n]*?(,(?:[^,\r\n]*?,){5}[^,\r\n]*)$
바꾸기 :\1

둘째 , JName 열을 다음 열에 복제합니다 .

검색 :   ^((?:[^,\r\n]*?,){2})([^,\r\n]*?,)
바꾸기 :\1\2\2

셋째 , 마지막 7 개 열을 가져와 31 번째 열부터 시작합니다.

검색 :   ^((?:[^,\r\n]*?,){30})((?:[^,\r\n]*?,){15}[^,]*?),((?:[^,\r\n]*?,){6}[^,\r\n]*)$
바꾸기 :\1\3,\2

넷째 , 마지막으로 마지막에 , 0,0, DONE, 1 을 추가합니다.

검색 :   (.)$
바꾸기 :\1,0,0,DONE,1

그러나 이러한 4 개의 교체는 단일 정규 표현식 교체로도 수행 할 수 있습니다.

검색 :   ^((?:[^,\r\n]*?,){2})([^,\r\n]*?,)((?:[^,\r\n]*?,){26})((?:[^,\r\n]*?,){16})([^,\r\n]*?,)[^,\r\n]*?,((?:[^,\r\n]*?,){5}[^,\r\n]*)$
바꾸기 :\1\2\2\3\5\6,\40,0,DONE,1

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관