데이터 분석을 위해서는 원시 데이터를 가공하는 능력이 중요합니다. 파이썬에서 제공하는 리스트, 문자열 메소드와 for문을 통해 리눅스의 'etc/passwd'파일에서 사용자 id만을 추출하는 방법을 살펴 보겠습니다. 만약 리눅스를 사용하고 있다면, 'etc/passwd'파일을 열어보시기 바랍니다. 아래와 같은 형식으로 되어 있을 것입니다.
root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin news:x:9:13:news:/etc/news:
각 라인아이템을 살펴보면 콜론으로 구분되어 있습니다. 각각 로그인id, 암호, 사용자id, 그룹id, 실제이름, 홈 디렉토리, 로그인쉘을 의미합니다.이제 이 내용을 s라는 문자열로 지정했다고 가정하고 이름을 추출해 보도록 하겠습니다.
splitlines() 메서드로 줄단위로 분리하기
먼저 각 레코드를 줄단위로 분리하여 리스트로 저장합니다. splitlines() 메서드를 사용하면 됩니다.
>>> s1 = s.splitlines() >>> s1 ['root:x:0:0:root:/root:/bin/bash', 'bin:x:1:1:bin:/bin:/sbin/nologin', 'daemon:x:2:2:daemon:/sbin:/sbin/nologin', 'adm:x:3:4:adm:/var/adm:/sbin/nologin', 'lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin', 'sync:x:5:0:sync:/sbin:/bin/sync', 'shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown', 'halt:x:7:0:halt:/sbin:/sbin/halt', 'mail:x:8:12:mail:/var/spool/mail:/sbin/nologin', 'news:x:9:13:news:/etc/news:']
split() 메서드로 이름 찾아 출력하기
이제 각 레코드가 분리된 s1이라는 리스트를 얻었습니다. 이제 우리가 할 일은 각 레코드를 순환하면서 이름을 찾아서 출력하는 것입니다. 문자열의 split() 메서드를 이용해 각 레코드를 분리한 새로운 리스트를 얻고, 그 중에서 이름이 포함된 인덱스를 찾아서 출력해 주면 됩니다.
for i in s1: s2 = i.split(':')[4] print(s2, end = " ") root bin daemon adm lp sync shutdown halt mail news
이외에도 문자열을 다루는 메서드는 대소문자 변환, 검색, 편집, 치환, 분리, 결합, 정렬 등과 관련하여 다양하게 있습니다. 파이썬 문자열 메서드와 관련된 자세한 자료는 파이썬 다큐먼트의 4.7.1 String Method를 참조하시면 됩니다.