본문 바로가기

프로그래밍

Python 문법 정리

반응형

 

요소  기능  예제 
리스트 선언/삽입/추가/제거

  array = []
  array.insert(int_index,'content')
  array.append('content')


  array.remove('content')

반환/추출/병합/크기 

 array.pop() # tail 반환
array.pop(int_index)
array.extend(new_array)
len(array)

홀/짝 배열 추출

array=[1, 2, 3, 4, 5, 6]


oddlist=array[0::2]
array[1, 3, 5]


evenlist=array[1::2]
array[2, 4, 6]

복사/위치/조인/정렬

new_array = list(array)
index = array.index('data')
str = ",".join(array)
l.sort()

딕셔너리 선언/초기화

선언 
dic ={} 또는 dic = dict() 


초기화
dic.clear()
dic = {"Key":'Value',"number":1234,"array":[1,2,3]}

key-value 추출 key 추출
 dic = {"apple":500, "banana":1000}
 dic.keys()

 dict_keys(['apple', 'banana'])


특정 key 추출
dic = {"apple":500, "banana":1000}
dic.get("apple")
 500


value 추출
dic = {"apple":500, "banana":1000}
dic.values()
 dict_values([500, 1000])
객체 추출

dic = {"apple":500, "banana":1000}
dic.items()
dict_items([('apple', 500), ('banana', 1000)])

치환 a1 = {"Green":"Tree","Red":"Rose","Yellow":"Sunflower"}


for color,flower in a1.items():
if flower == "Rose":
a1[color] = "Tulip"


a1{'Green': 'Tree', 'Red': 'Tulip', 'Yellow': 'Sunflower'}
문자열 URL 파싱
(Split,Replace)


from urllib.parse import urlsplit


surl = urlsplit('http://127.0.0.1/bsd/board/?bid=1&user=jdh5202')


SplitResult(Schema='http', netloc='127.0.0.1', path='/bsd/board/', query='bid=1&user=jdh5202)



from urllib.parse import urlparse, parse_qs, parse_qsl


parts = urlparse("http://127.0.0.1/bsd/board/?bid=1&user=jdh5202")
                        parts = parts._replace( query=parts.query.replace('jdh5202','jdh3202') )
pam = parse_qs(parts.query)
pam{'bid': ['1'], 'user': ['jdh3202']}

쿠키 파싱

from http.cookies import SimpleCookie


rawdata = 'security=low; PHPSESSID=722b3646e8a928539d479729fbb4dfe7'
cookie = SimpleCookie(rawdata)
cookies={}


for key,Morsel in cookie.items():
    cookies[key]=Morsel.value


cookies{'security': 'low', 'PHPSESSID': '722b3646e8a928539d479729fbb4dfe7'}

문자열 포매팅

a1 = 'name : {}, city: {}'.format('BlockDMask','Seoul')
a2 = 'song1 : {1}, song2: {0}'.format('Faded','ice cream')


a1 - name : BlockDMask, city: Seoul
a2 - song1 : ice cream, song2: Faded



s = "jdh5202 tistory blog"
len(s)    # 문자열 길이
s.split() # 공백 문자를 기준으로 문자열을 분리하여 list로 저장
s.startswith('blog'# 문자열의 blog로 시작하는가? True:False
s.endswith('blog')   # 문자열의 blog로 끝나는가? True:False
s.find('tistory')       # 첫 번째로 tistory가 나오는 인덱스
s.rfind('blog')      # 마지막으로 blog가 나오는 인덱스
s.count('t')      # 문자열 t가 몇 번 나오는가?
s.isalnum()         # 문자열이 글자와 숫자로만 이뤄져있는가? True:False
s.strip('.')        # 문자열 양끝의 .를 삭제한다.
s.capitalize()      # 첫 단어를 대문자로 만든다.
s.title()           # 모든 단어의 첫 글자를 대문자로 만든다.
s.upper()           # 문자열을 모두 대문자로 만든다.
s.lower()           # 문자열을 모두 소문자로 만든다.
s.swapcase()        # 문자열의 대문자는 소문자로, 소문자는 대문자로
s.replace('blog''bloger'# 문자열의 blog를 bloger로 변경한다.

정규식 import re
DATA = "Hey, you - what are you doing here!?"
re.findall(r"[\w']+", DATA)
Prints['Hey', 'you', 'what', 'are', 'you', 'doing', 'here']


re.split('\W+', DATA)
Prints['Hey', 'you', 'what', 'are', 'you', 'doing', 'here', '']

모듈


requests
(GET,POST)


import requests
URL='https://www.daum.net/'
params={'param1':'value1','param2':'value2'}
cookies = {'session_id' : 'cookie-value'}
res=requests.get(URL,params=params,cookies=cookies)


res.status_code # http 상태 코드
res.text # 불러온 html 정보
res.url #요청한 url 정보
res.cookies # 받아온 쿠키 정보


# image request
im = Image.open(requests.get(url, stream=True).raw)
im.save( file_name )
res=requests.post(URL,data=data,cookies=cookies)
res=requests.post(URL,data=json.dumps(data),cookies=cookies) # str type
web browser import webbrowser
webbrowser.open(url) # 새 창
webbrowser.open_new_tab(url) # 새 탭
math import math
math.ceil(12.2)   # 13 올림
math.floor(12.6)  # 12 내림 
  math.trunc(12.6)  # 12 버림  
random post_term=random.randrange(15,30)
# 숫자 중복방지
num = list(range(1,5000))
for i in range(100):list.append( num.pop(num.index(random.choice(num))
subprocess # 외부 파이썬 실행
import subprocess
# check_output은 실행한 결과를 저장, run은 실행만
process = subprocess.check_output(python_path + " " + arg1 + " " + arg2, shell=False, encoding='utf-8')
입출력




파일 I/O  path = "C:\\Users\\jdh52\\OneDrive\\"
fname = "abcd.txt"


f = open(path+fname, 'w')
f.write("abcde")
f.close()


data = open(path+fname).read()
data["abcde"] 
CSV import csv

# read csv
tmp_path = os.getcwd() + '\\' + 'write_tmp.csv'

if os.path.isfile(tmp_path):
f = open(tmp_path,'rt', encoding='utf-8')
rdr = csv.reader(f)
lines = list(rdr)
f.close()
# 읽은 내용 저장
self.token_str.setText(lines[0][1])
self.blog_name.setText(lines[1][1])
self.delete_postfile.setChecked( ( lines[2][1]=='True') )


# write csv
f = open(tmp_path,'w', newline='') # 행 추가하려면 두 번째 인자에 a 입력
wr = csv.writer(f)
wr.writerow([1,self.token_str.text()])
wr.writerow([2,self.blog_name.text()])
wr.writerow([3,self.sel_dir_str.text()])
wr.writerow([4,self.delete_postfile.isChecked()])
f.close()
폴더 내 파일 조회
폴더 생성/파일 이동 파일명만 추출
# 폴더 내 파일 목록 조회
import os
path=os.getcwd()
file_list = os.listdir(Path) 
## txt 파일 조회
file_list_txt = [file for file in file_list if file.endswith('.txt')]

# 폴더 생성/파일 이동

## 폴더 없으면 생성
if (not os.path.exists(dir_path)):
os.makedirs(dir_path)
## 파일 이동
shutil.move(file_path, dir_path)

# 파일 명만 추출
file_path = path + '/' + '파일입니다.txt'
post_title = os.path.splitext( os.path.basename( file_path ) )[0]  ## 파일입니다
 파일 인코딩 변경 # 파일 인코딩 변경(euc-kr -> utf8)
for x in file_list_txt:
input_name = working_path + '/' + x
try: 
input = open(input_name, "r", encoding="euc-kr")
chunk = input.read()
output = open(input_name, "w", encoding="utf-8")
output.write(chunk)
except:
pass
 json 파일 생성  file_data["attributes"] = [ 
            #{ 'test': "abcd" , 'value' : str(random.randint(1,50)) }

 file_data["description"] = "desc"​
 with open( json_path, 'w', encoding="utf-8") as make_file:
            json.dump(file_data, make_file, ensure_ascii=False, indent="\t")​
쓰레드
QTimer self.timer = QTimer(self)
self.timer.start(2000)
# 2초에 한 번씩 write_exec 함수 호출, lambda를 이용해 함수 인자를 넘김
self.timer.timeout.connect(lambda:self.write_exec(arg1,arg2))
# QTimer 정지
self.timer.stop()



 

반응형

'프로그래밍' 카테고리의 다른 글

한국어 문장 생성 AI - KoGPT2  (0) 2021.06.19
이클립스 디버깅  (0) 2021.01.10
Pyqt 문법 정리  (0) 2020.11.10
Pyqt 설치 및 동작  (0) 2020.10.26
KoNLPy(코엔엘파이) 설치하기  (0) 2020.07.22