Computer Science74 [Python] Slice position과 Index position 2020. 3. 3. [Linux_bash] \(back slash, escape character)의 의미 리눅스 쉘 스크립팅에서는 특별한 의미를 갖는 기호들이 있다. 이런 기호들은 정규표현식으로 패턴을 찾기 위해 사용한다. 대표적으로, ^ 행의 시작 $ 행의 끝 . 하나의 문자 [] [] 안에 있는 집합 중 하나와 대응 [^ ] [] 안에 있는 집합에 속하지 않음 * 문자 뒤에 써서, 그 문자와 같은 문자가 0개 혹은 그 이상 존재함 이외에도 많은 문자들이 있는데, 만약 .이 있는 문자열을 찾고 싶을 때 grep "." filename 이렇게 쓰면 파일 안에 있는 모든 문자를 grep한다. 따라서 이런 경우에 grep "\." filename 이런 식으로 escape해서 .이 특별한 의미를 지니지 않고, 문자 그대로 .을 나타낸다고 할 수 있다. # 문제 ① file1은 csv파일이다. ② 첫번째 필드가 아.. 2020. 3. 3. [Python] 에러 내용을 경우에 따라 바꾸면서 AssertionError 발생시키는 방법 Assertion Error란 조건이 거짓인 경우에 실행을 중단시키고 내는 에러를 말한다. 1. assert assert [조건], [에러 내용] assert는 조건을 만족하지 않을 경우에 에러를 발생시킨다. # letter이 string type이 아닌 경우에 error를 발생시킨다 >>> assert type(letter) == str, 'invalid type' # Traceback (most recent call last): # AssertionError: invalid type 2. raise 에러 내용에 if문을 사용하고 싶다면 assert 대신 raise를 사용하면 된다. raise는 if문으로 조건을 적어준 다음에 사용한다. # 문제 ① count가 100이 아닌 경우에 error를 발생시.. 2020. 3. 3. [Python] 딕셔너리의 value에 set 자료형 넣기 result = {} for line in filename: thisLine = line.rstrip('\n') if pattern(thisLine) in result: result[pattern(thisLine)].add(thisLine) else: result[pattern(thisLine)] = set() result[pattern(thisLine)].add(thisLine) result = {} for line in filename: thisLine = line.rstrip('\n') if pattern(thisLine) in result: result[pattern(thisLine)].add(thisLine) else: result[pattern(thisLine)] = {thisLine} res.. 2020. 3. 1. [Linux_bash] regex,vi: 큰 수를 영어 숫자 단위(B,M,K)로 변경하기 vi 편집기에서 치환하는 명령어를 사용하면 많은 숫자가 나열되어있는 큰 수를 영어 숫자 단위로 변경할 수 있다. vi test2.txt :%s/^\([0-9]\{1,3\}\)[0-9]\{3}$/\1K/g -> 천을 K로 :%s/^\([0-9]\{1,3\}\)[0-9]\{6}$/\1M/g -> 백만을 M으로 :%s/^\([0-9]\{1,3\}\)[0-9]\{9}$/\1B/g -> 십억을 B로 ^,$: 문자열의 시작과 끝을 알린다. 만약 시작과 끝을 표시하지 않으면 K로 고치는 과정에서 124K64K 456K568 895K53 378K 이렇게 나온다. \([0-9]\{1,3\}\): 임의의 숫자가 1~3번 있음을 그룹으로 묶는다. [0-9]\{3}: 숫자가 세개 존재한다. \1: 첫번째 그룹을 의미한다. 2020. 2. 29. [Linux_bash] find,rm,cp: | (파이프라인) 이 작동하지 않을 때 find 명령어를 사용하다 보면 파이프라인이 작동하지 않는 경우가 있다. 파이프라인 (|)은 전 명령어의 stdout (표준출력)을 다음 명령어의 stdin (표준입력)으로 바꿔주는 역할을 한다. 예를 들어서 1. find와 rm 조합 find -name . directory1 | rm -> X rm 명령어는 stdin을 무시하는 명령어이다. 이런 경우 xargs 명령어를 사용하면 해결이 된다. xargs 명령어는 stdout을 arguments(인자)로 전달해 명령을 실행한다. 또한 여러가지 옵션을 더해서 사용할 수도 있다. ( man xargs 로 확인 ) find -name . directory1 | xargs rm 혹은 find -name . directory1 -exec rm {} \; 이렇게 .. 2020. 2. 29. [Linux_bash] regex: 정규표현식 그룹(captured group) 이용하기 정규표현식을 사용할 수 있는 명령어를 쓸 때 특정 패턴을 그룹 지어놓으면 편리할 때가 많다. 그룹을 짓는 방법: \(패턴\) 예를 들어서 1. 특정 문자 패턴이 반복되는 것을 찾을 때 찾고싶은 것이 특정 년도의 뒷자리 2개와 날짜가 같은 경우라고 생각하자. YYYY/MM/DD -> 이 두개가 같은 경우 grep '..\(..\)/../\1' filename ..: 처음의 점 두개는 YYYY 이다. \(..\): 뒤의 점 두개 (YYYY)는 그룹으로 묶었다. 점은 임의의 문자 하나를 의미한다. /../: 월(month)를 의미 \1: 첫번째 그룹을 의미 이렇게 같은 패턴이 나중에 또 나올 때 그룹으로 묶어서 불러오면 편리하다. 불러오는 방법은 \1, \2 .. 와 같이 백슬래쉬 뒤에 숫자를 붙인다. 숫자는.. 2020. 2. 29. [Linux_bash] pr,sed,grep: 문서 양식화하고 여백 지우기 pr 명령어는 프린트를 할 때 보기 좋게 문서 파일을 양식화하고 standard output으로 내보낸다. syntax: pr [option] [filename] 파일의 행 디폴트 값은 66줄로, 텍스트 파일이 66줄보다 짧다면 나머지는 여백으로 처리된다. # 텍스트 파일에서 여백(빈 줄) 지우기 sed -r '/^\s*$/d' sed '/^$/d' grep -v '^$' 간단한 방법으로 이렇게 세가지를 주로 사용한다. ^ : 문장의 시작을 의미한다. $ : 문장의 끝을 의미한다. 따라서, ^$ : 문장에 아무 문자도 없음을 의미한다. 명령어를 종합해서 써보면, pr filename | sed '/^$/d' 2020. 2. 29. 이전 1 ··· 5 6 7 8 9 10 다음