Kraken api - get token with python

Kraken api - get token with python an example of how you can generate a WebSocket authentication token using Python for Kraken's API: ```python import time import base64 import hashlib import hmac import urllib.request import json # Replace with your Kraken API public and private keys api_key = 'YOUR_API_PUBLIC_KEY' api_secret = 'YOUR_API_PRIVATE_KEY' # API endpoint and parameters api_path = '/0/private/GetWebSocketsToken' api_nonce = str(int(time.time() * 1000)) api_post = 'nonce=' + api_nonce # Create the SHA256 hash api_sha256 = hashlib.sha256(api_nonce.encode('utf-8') + api_post.encode('utf-8')).digest() # Create the HMAC signature api_hmac = hmac.new(base64.b64decode(api_secret), api_path.encode('utf-8') + api_sha256, hashlib.sha512) api_signature = base64.b64encode(api_hmac.digest()) # Create the request api_request = urllib.request.Request('https://api.kraken.com' + api_path, api_post.encode('utf-8')) ap

[핵심기초] 파이썬에서 정규 표현식 이용하기

 


[핵심기초] 파이썬에서 정규 표현식 이용하기


파이썬에서 정규표현식을 사용하기 위해서는 Regex를 위한 모듈인 re 모듈을 사용합니다.

 re 모듈의 compile 함수는 정규식 패턴을 입력으로 받아들여 정규식 객체를 리턴합니다. re.compile('검색 대상 문자열') 함수로 검색 대상 문자열을 입력하고 정규식 객체 (re.RegexObject 클래스 객체)를 통해 정규식을 이용할 수있습니다.

re.RegexObject 클래스는 re.search(pattern), re.match(pattern) ,re.split(pattern) 등과 같이 문자열을 검색, 분리, 대체 하는 다양한 함수들을 제공합니다.


1. 파이썬 Re모듈이 제공하는 Method 기능

- match(), search(), findall(), split(), sub() 등과 같이 다양한 함수를 제공합니다.

구분Method 종류설명
검색



re.match(RE, string)문자열의 시작 부분에서 RE가 일치하는지 판단합니다.
re.search(RE, string)문자열을 읽어 RE가 일치하는 위치를 찾으습니다.
re.findall(RE,string)RE가 일치하는 모든 부분 문자열을 찾아 리스트로 반환합니다.
re. finditer(RE,string)RE가 일치하는 모든 부분 문자열을 찾아 iterators 로 반환합니다
분리re.split(RE, string)문자열을 RE 패턴으로 쪼개어 리스트로 반환 합니다.
대체re.sub(RE, SUB, string)문자열에서 RE 패턴의 문자열을 SUB 문자열로 대체합니다.
* Iterators : https://www.w3schools.com/python/python_iterators.asp

다음은 파이썬 정규표현식 re 모듈을 import 하고 특정 문자열에서 무궁화로 시작하고 bloomed.로 마치는 문자를 확인하는  정규표현식입니다.


import  re

txt =  "무궁화 꽃이 피었다, The Mugunghwa has bloomed."
x = re.search("^무궁화.*bloomed.$", txt)
if x:
    print("YES! We have a match!")
else:
    print("No match")

print(x)

# 결과
<re.Match object; span=(0, 38), match='무궁화 꽃이 피었다. The Mugunghwa has bloomed.'>
# .* : 앞의 문자가 0개 이상 반복

파이썬 Re모듈로 문자열의 인덱스 기능

- 찾는 문자열의 시작위치, 끝 위치, 포함하는 구간의 문자열의 인덱스를 리턴합니다.

Method 종류설명
group()RE와 일치하는 문자열을 반환합니다.
start()일치의 시작 위치를 반환합니다
end()일치의 끝 위치를 반환합니다
span()일치의 (시작, 끝) 위치를 포함하는 튜플을 반환합니다.

 

import re
txt="Isaac Newton, physicist"
m = re.match(r"(\w+) (\w+)", txt)
print("group.all:",    m.group(0) )  # The entire match
print("group.first:",  m.group(1) )  # The first parenthesized subgroup.
print("group.second:", m.group(2) )  # The second parenthesized subgroup.
print("group.multiple:", m.group(1, 2))    # Multiple arguments give us a tuple.

>>>>>>>>>>>>>>>
group.all: Isaac Newton
group.first: Isaac
group.second: Newton
group.multiple: ('Isaac', 'Newton')

 

3. 자주 사용하는 정규식


3.1 정규식 정의 방법

1) 슬래시 와 문장 패턴을 사용
const re = /ab+c/
2) RegExp 생성자 이용
const re = new RegExp( 'ab+c')

3.2 정규식에 사용하는 메타 문자들의 용도별 예시

정규식에서 사용하는 메타문자의 종류 : . ^ $ * + ? { } [ ] \ | ( ) 등과 같은 특수 문자들 입니다.
정규식에 포함되는 일부 문자들은 특수한 의미와 기능을 가진 메타 문자 (metacharacters)로 인식합니다. 일반적인 문자로서 인식 하려면 "₩." ₩^ ₩$ 등과 같이 역슬래쉬 다음의 문자는 원래의 문자로 인식을 합니다. 주로 정규식의 메타 문자는 Regular Expression에서 특정 문자의 반복이나 의미를 바꾸어 주도록 처리할 문자 검색과 대체 등에 활용이 됩니다.


`.` :  1개의 문자와 일치, 뉴라인(\n) 을 제외한 모든 문자를 의미
예) .{3} : 아무 문자 3개로 구성된 문자열을 의미 (F15, 0x0 등)

import re
pattern =r"gr.y"
string ="gray"
result = re.match(pattern, string)
print(result)
# <re.Match object; span=(0, 4), match='gray'>

 
`^` : 문자열이나 행의 처음을 의미,  문자열의 시작 패턴을 의미함 
예) ^abc : abc로 시작하는 문자열을 의미 (abcd, abc12 등)

pattern =r"^gr.y"
string ="gray"
result = re.match(pattern, string)

`$` : 문자열을 마지막을 의미하고  종료 문자열의 패턴을 정의함
예) xyz$ : xyz로 종료되어야 함 (123xyz, strxyz 등)

pattern = r"gr.y$"
string = "gray"
result = re.match(pattern, string)

`*` : 앞 패턴이 0개 이상 반복됨을 의미
예) \d* : 숫자가 없거나 하나 이상인 문자열을 의미 

pattern = r"go*gle"
string = "ggle"
result = re.match(pattern, string)

`+` : 앞 패턴이 최소 하나 이상 반복됨
예)  \d+ : 숫자가 하나 이상 반복되는 문자열을 의미\

import re
pattern = r"go+gle"
string = "gogle"
result = re.match(pattern, string)

`?` : 앞 패턴이 없거나 정확히 하나의 문자를 의미함 (Optional 패턴을 정의할 때 사용)
예) \d? : 숫자가 하나 있거나 없어야 함

import re
pattern = r"go?gle"
string = "ggle"
result = re.match(pattern, string)

{n} : {n} 반복횟수가 정확히 n번, 패턴{n} 앞 패턴이 n번만 반복해서 나타나는 경우
예) \d{3} : 숫자가 3개 있어야 함 
{n,} : {n,} 반복횟수가 n번 이상, 패턴{n,} 앞 패턴이 n번 이상 반복해서 나타나는 경우
예) \d{3,} : 숫자가 3개이상 이어야 함
{n,m} :  {m, n} 반복 횟수 지정, 패턴{n, m} 앞 패턴이 최소 n번, 최대 m 번 반복해서 나타나는 경우 (n 또는 m 은 생략 가능)
예) \d{3,5} : 숫자가 3개, 4개 혹은 5개 있어야 함 

import re
pattern =r"go{1,3}gle"
string ="googlegle"
result = re.match (pattern, string)

 
[]: [문자들] 괄호 안의 가능한 문자 들의 집합을 정의함
예)  [Pp]ython : "Python" 혹은 "python"

import re
pattern =r"[abc]de"
pattern = r"[^abc]de"
string ="ade"
result = re.match (pattern, string)

`[^문자들]` :  [문자들] 중에서 제외되는(피해야할) 문자들의 집합을 정의함.
예) [^aeiou] : 소문자 aeiou를 문자를 제외한 문자들 의미함

import re
pattern = r"[^abc]de"
string ="ade"
result = re.match (pattern, string)

() : 괄호안의 문자열을 그룹으로인식함
예)  [(abc)f-z]   :   abcf,  abcx  abcz 등 과 같이 abc로 시작되는 문자열을 표현
`\` :  '\' 뒤에오는 문자를 특수 문자로 인식을 합니다. 
예) \\ 특수문자 '\'     \.  "."
`|` : 두 패턴 중 하나이어야 함 (OR 기능)
예) a | b : a 또는 b 를 나타냄
\A , \Z : \A 는 ^ 와 같고    \Z 는 $ 와 같음 
 

3.3 정규식에서 사용하는 특수 시컨스

정규식의 문자처리를 좀더 쉽게 표현하기 위해서 메타 문자와 달리 역설래시와 알파벳 문자로 구성된 특스 시컨스는 특수한 의미를 부여합니다.
특수 시퀀스는 '\'로 시작하고 숫자(digit) 집합, 글자(letter) 집합 또는 공백이 아닌 모든 것의 집합과 같이 종종 유용한 미리 정의된 문자 집합을 나타냅니다.

\d :
    숫자 0 ~ 9 \d\d\d : 0 ~ 9 범위의 숫자가 3개를 의미 (123, 000 등)
\w :
    문자를 의미 \w\w\w : 문자가 3개를 의미 (xyz, ABC 등)
\s :
    화이트 스페이스를 의미하는데, [\t\n\r\f] 와 동일 \s\s : 화이트 스페이스 문자 2개 의미 (\r\n, \t\t 등)
\d : 
    모든 십진 숫자와 일치합니다; 이것은 클래스 [0-9]와 동등합니다.
\D : 
   모든 비 숫자 문자와 일치합니다; 이것은 클래스 [^0-9]와 동등합니다.
\s : 
   모든 공백 문자와 일치합니다; 이것은 클래스 [ \t\n\r\f\v] 와 동등합니다.
\S :   
    모든 비 공백 문자와 일치합니다; 이것은 클래스 [^ \t\n\r\f\v] 와 동등합니다.
\w :
   모든 영숫자(alphanumeric character)와 일치합니다; 이것은 클래스 [a-zA-Z0-9_]와 동등합니다.
\W : 
   모든 비 영숫자와 일치합니다; 이것은 클래스 [^a-zA-Z0-9_]와 동등합니다.



참고
https://docs.python.org/ko/3/howto/regex.html

댓글

이 블로그의 인기 게시물

SSL/TLS 인증서 오류를 해결- 리눅스명령모음 - SSL certificate problem

(truffle 환경 설정) 스마트 계약 배포 와 truffle deploy 오류 해결 - Error: Could not find artifacts for SimpleStorage from any sources

자기주권 신원 (SSI Self-Sovereign Identity) 인증의 발전 그리고 정보 민주화 (Information Democratization)