Python Basics II

MisCaminos·2021년 4월 5일
0

python & data analysis

목록 보기
2/7
post-thumbnail

Sequence, String, 형변환 함수

Sequence

sequence란?

어떤 객체가 순서를 가지고 나열되어 있는것

python에서 sequence는: String, list, tuple이 있다.
-String = 문자 또는 기호들이 순서대로 나열되어있는 sequence type
-list = 객체가 순서대로 나될되어있는 sequence type
-tuple = 값을 변경할 수 없는 임의의 객체가 나열되어있는 sequence type

sequence indexing

indexing을 통해서 해당 값을 얻을 수 있다.
0~부터 정수를 사용. 음수도 가능.
음수 : 끝에서 몇번째인지를 가리킴

sequence slicing

  • 시퀀스 자료형에서 일정범위에 해당하는 부분을 취하는 방법이다.
  • [시작인덱싱 : 끝 인덱싱 : 스텝(간격)]
  • [m:n] m이상 n미만 (m은 포함, n은 미포함)
  • [:n] 처음부터 n미만 (n 미포함)
  • [m:] m부터 자료끝까지 (m 포함)
  • [:-n] 처음부터 끝에서 n번째 미만인 요소까지
  • [-m:] 자료의 끝에서m번째 요소부터 시퀀스 자료의 끝까지

sequence 다루기

  • 연결
    자료형이 동일한 2개의 sequence자료를 + 연산자로 연결해서 새로운 sequence를 만들수있다
  • 반복
    동일한 시퀀스 자료를 반복하여 새로운 자료를 만들고자 하면 * 연산자 사용
  • 크기
    len() 함수를 이용한면 시퀀스 자료의 크기를 알 수 있다.
  • 시퀀스 맴버 존재여부 확인
    in은 자료에 어떤 값이 있는지 없는지 확인할 수 있다.

String

문자열을 다루는 여러가지 방법들이 존재한다
'abc' 또는 abc"과 같이 quotation으로 문자열임을 표시한다. 만약 문자열이 길다면, ''' 또는 """로 표시한다.

문자열 methods

our_string='python is the best language ever'
  • 첫글자 대문자
print(our_string.capitalize())
결과: Python is the best language ever
  • 가운데 정렬
    문자 또는 기호를 넣어서 빈자리를 매꿀수도 있다.
print(our_string.center(50))
print(our_string.center(50,'-'))
  • 문자열 내에서 부분문자열 세기 count
print(our_string.count('a'))
결과 : 2
  • 문자열 partition
    문자열을 분할(partition)하면, 분리자의 앞 부분, 분리자, 그리고, 그 분리자의뒷 부분의 세 원소로 이루어진 튜플을 반환한다.
x = "Hello, my name is Josh"
print(x.partition('n'))
결과: ['Hello, my ', 'n', 'ame is Josh']

또는, 반복적으로 있는 문자를 기준으로 split할 수 있다.

y = "apple,orange,pineapple,watermelon,plum"
print(y.split(','))
결과: ['apple', 'orange', 'pineapple', 'watermelon', 'plum']

문자열 y에서 몇개까지만 split할지 지정할 수 있다.

print(y.split(',',1))
print(y.split(',',2))
결과:

['apple', 'orange,pineapple,watermelon,plum']

['apple', 'orange', 'pineapple,watermelon,plum']
  • 문자열 formatting
    변하는 값을 나타내기 위해 아래와 같이 기호를 사용해서 문자열을 format할 수 있다.
    - %s 문자열에 대응됨
    - %c 문자나 기호 한개에 대응됨
    - %f 실수에 대응됨
    - %d 정수에 대응됨
    - %% '%'라는 기호 자체를 표시함
txt1 = 'java'
txt2 = 'python'
num1 = 5
num2 = 10
print('나는 %s보다 %s에 더 익숙합니다.' %(txt1, txt2))
print('%s은 %s보다 %d배 더 쉽습니다.' %(txt2, txt1, num1))
print('%d + %d = %d' %(num1, num2, num1+num2))
print('작년 세계 경제 성장률은 전년에 비해 %d%% 포인트 증가했다.' %num1)
결과:
나는 java보다 python에 더 익숙합니다.
python은 java보다 5배 더 쉽습니다.
5 + 10 = 15
작년 세계 경제 성장률은 전년에 비해 5% 포인트 증가했다.

실수의 경우 자리수를 formatting 할수있다.

no3 = 12.35
print('%3.2f%%' % no3)
print('%5.2f%%' % no3)
print('%5.1f%%' % no3)
결과: 
12.35%
12.35%
12.3%
  • 커서위치 제어
    end='' : (''는 single quotation) 줄바꿈 없이
    \r : 캐리지 리턴(Carriage Return) 은 현재 위치를 나타내는 커서 를 맨 앞으로
    이동시킨다는 뜻이다.
from time import sleep
 
for i in range(100):
   msg = '\r진행률 %2d%%' %(100-i-1)
   print(msg, end='')
   sleep(0.1) # 0.1초동안 중지됨
결과: 100% --> 0% (0%가 될때까지 0.1초 텀을두고 순차적으로 감소한다.)
  • escape문자
    \: print()안에 문장이 길어질때 '\'를 입력하면 에러없이 다음줄의 내용도 출력이된다.
    \n: 줄 바꾸기
    \t: tab 넣기
    \: 기호 \를 출력
    \' 또는 \": single 또는 double quotation 기호를 출력

그외 다른 문자열 methods:

  • in으로 문자열에서 특정한 문자나 문자열이 있는지 확인한다.
  • len() : 문자열의 길이
  • count() : 문자열에 있는 문자 갯수 구한다.
  • isalpha() : 문자열만 있는지 검사한다.
  • isdigit() : 숫자만 있는지 검사한다.
  • isalnum() : 문자열과 숫자만 있는지 검사한다.
  • upper, lower 대소문자로 변환
  • lstrip, rstrip, strip : 좌우 공백제거
  • split : 특정 문자열로 분리하기
  • join : 특정 문자열로 결합하기
# list = str.split() : 문자열에서 리스트로, 공백으로 구분 
# ” “.join( list ) : 리스트에서 문자열으로

a='Beautiful, is; better*than\nugly'
import re
re.split('; |, |\*|\n',a)

url = 'http://www.naver.com/news/today=20160831'
log = 'name:홍길동 age:17 gender:남자 nation:한국'
 
ret1 = url.split('/')
print(ret1)
 
ret2 = log.split()
for data in ret2:
   d1, d2 = data.split(':')
   print('%s -> %s' %(d1, d2))
 

loglist = ['2016/08/26 10:12:11', '200', 'OK', '이 또한 지나가리라']
bond = ';'
log = bond.join(loglist)
print(log)
결과:
['http:', '', 'www.naver.com', 'news', 'today=20160831']
name -> 홍길동
age -> 17
gender -> 남자
nation -> 한국
2016/08/26 10:12:11;200;OK;이 또한 지나가리라

형변환 함수

str(variable): variable을 문자열로 변환해서 반환
chr(variable): 문자코드값에 해당하는 문자를 반환
ord(variable): 문자에 해당하는 문자코드 값을 반환
int(variable): 입력한 문자열 숫자를 정수로 변환해서 반환

print(chr(4))
print(ord('A'))
print(ord('z'))
print(float(8))
결과:
??
65
122
8.0

#빈공간, 문자를 입력하면 예외에 걸려서 메세지 출력
#정수나 실수를 입력하면 정수 또는 실수 출력
numstr = input('숫자를 입력하세요: ')
try:
   num = int(numstr)
   print('당신이 입력한 숫자는 정수 <%d>입니다.' %num)
except:
   try:
      num = float(numstr)
      print('당신이 입력한 숫자는 실수 <%f>입니다.' %num) 
   except:
      print('+++ 숫자를 입력하세요~ +++')
profile
Learning to code and analyze data

0개의 댓글