아래 예제는 여러개 폴더에 내용이 비슷하고 파일명이 같은 파일이 각각 있어 한꺼번에 돌리는 예제 입니다.

줄 별로 관리 하여 새로 만드는 예제 입니다.

# os Import
import os

# folders 경로에 있는 모든 폴더를 조회 해서 for 문으로 돌림
for i in os.listdir("./folders/"):
    f = open(os.path.join(
            '../../output/string/{}'.format(i), # 각각의 폴더에
            'tutorials.xml', # tutorials.xml 파일을 불러 옴
        ), 'r')
    line = f.readline() # line 에 담고
    new_line = '' # 필요한 값만 넣을 변수 선언
    
    # 아래 항목의 값만 new_line 에 담기
    while line:
        if '<?xml' in line:
            new_line += line
        elif 'important' in line:
            new_line += line
        elif 'subjects' in line:
            new_line += line
        else:
            pass
            
		# 뽑힌 줄 제외 하고 다시 line 에 넣기
        line = f.readline()
	
    f.close()
    
    # 해당 폴더에 파일 덮어 씌우기
    mk = open(os.path.join(
                './folders/{}'.format(i),
                'tutorials.xml',
            ), 'w')
    mk.write(new_line)
    mk.close()

regex[정규식 표현] 을 사용 할때

공백을 \s 로 표시 하면 공백이 없을 경우 반환하는 값 자체가 나오지 않습니다

이럴 땐 

\s 대신 [- ]? 값을 넣어서 있거나 없을 때 둘 다 값을 반환하게 만들어 보세요!

끝!

사용 방법입니다. 룰렛을 해보셨다면 쉽게 이해 하실 거에요.

제가 카지노 가서 자주 배팅하는 방법을 python 으로 구현 해 보았습니다.

카지노 룰렛 python 구현

 

아래 소스를 복사 해서

casino.py 파일을 만들고 cmd 창에서 python casino.py 실행 하여 해보세요.

실행 파일을 만들고 싶으시면 pyinstaller 를 사용 하시면 됩니다.

pyinstaller -w -F casino.py

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QLineEdit, QMessageBox
from random import randint

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setupUI()

    def setupUI(self):
        self.setWindowTitle("Roulette")

		# 나온 숫자 label
        self.number = QLabel(self)
        self.number.setText('0')
        self.number.move(30, 15)

		# 보유 금액 label
        self.tmoney = QLabel(self)
        self.tmoney.setText('1000')
        self.tmoney.move(30, 40)
        
        # 배팅 구역 edit
        self.bet = QLineEdit(self)
        self.bet.resize(30, 20)
        self.bet.move(70, 45)

		# 배팅 금액 edit
        self.mn = QLineEdit(self)
        self.mn.setText('100')
        self.mn.resize(30, 20)
        self.mn.move(70, 20)

		# 게임 시작 버튼
        btn1 = QPushButton("Start", self)
        btn1.resize(50,20)
        btn1.move(55,70)
        btn1.clicked.connect(self.btn1_clicked)        

		# 초기화 버튼
        btn2 = QPushButton("Init", self)
        btn2.resize(30,20)
        btn2.move(20,70)
        btn2.clicked.connect(self.btn2_clicked) 

    def btn1_clicked(self):
        a = randint(0,36)
        b = self.mn.text()
        c = self.bet.text()
        t = self.tmoney.text()

        if not b:
            self.number.setText(str(a))
            pass
        elif int(t) - (int(b) * 2) < 0:
            QMessageBox.about(self, "error", "no money")
            pass
        elif not a:
            tm = int(t) - (int(b) * 2)
            self.tmoney.setText(str(tm))
            self.number.setText(str(a))
        else:
            if a > 0 and 13 > a and int(c) == 1:
                tm = int(t) - (int(b) * 2)
                self.tmoney.setText(str(tm))
                self.number.setText(str(a))
            elif a > 12 and 25 > a and int(c) == 2:
                tm = int(t) - (int(b) * 2)
                self.tmoney.setText(str(tm))
                self.number.setText(str(a))
            elif a > 24 and int(c) == 3:
                tm = int(t) - (int(b) * 2)
                self.tmoney.setText(str(tm))
                self.number.setText(str(a))
            else:
                tm = int(t) + int(b)
                self.tmoney.setText(str(tm))
                self.number.setText(str(a))

    def btn2_clicked(self):
        self.tmoney.setText('1000')

if __name__ == "__main__":
    app = QApplication(sys.argv)
    mywindow = MyWindow()
    mywindow.show()
    app.exec_()
# 1. pandas 선언
import pandas as pd

# 2. Excel 파일 불러오기
df = pd.read_excel('excel.xlsx')

# 3. excel 의 nill 값을 '' 로 변환
df = df.fillna('')

python pandas 를 활용 하여 엑셀 파일 불러오기, 수정하기, tolist() 활용하기, 엑셀 저장하기

# 1. pandas 선언
import pandas as pd

# 2. Excel 파일 불러오기
df = pd.read_excel('excel.xlsx')

# 3. excel 의 값을 list 로 변환
df_list = df.values.tolist()

# 4. 불러온 excel 의 column 값 가져오기
df_col = list([col for col in df])

# 5. df_list 수정 

# 6. 다시 df 로 변환
df = pd.DataFrame(df_list, columns=df_col)

# 7. Excel 파일로 저장
df_att.to_excel('36_official_language.xlsx', index=False)

 

 

import re

괄호 혹은 특수 문자를 포함하여 사이에 있는 글자 까지 모두 지울 수 있는 방법입니다.

괄호 안의 경우

remove_text = 'asdf(asdf)'

print(re.sub(r'\([^)]*\)', '', remove_text))

출력 결과 : 'asdf'

 

위의 \( \) 값 대신에 다른 특수문자를 사용해서 지워도 됩니다

예) <, > 안의 글자 지우기 

re.sub(r'\<[^)]*\>', '', remove_text)

안녕하세요.

python set 자료형의 첫번째 값 불러오기 위해선

list 로 변환이 필요 합니다. set type 에는 순서가 없기 때문에 첫번째 값을 불러 올 수가 없는데요

아래와 같이 list 형으로 변환 한뒤 불러오면 됩니다.

set_type = {1,2,3}

list_type = list(set_type)

print(list_type[0])

명쾌한 해답은 아니지만 어떤 값이 들어 있는지 확인 할 때 유용한 방법입니다.

감사합니다.

요즘 소스 관리 하면 Git 은 필수죠?

저는 개발 면접 볼 때마다 Git 써봤냐가 아닌 소스관리는 어떻게 했냐? 라는 질문을 많이 받았습니다.

그때 마다 Git 으로 했다고 하면 끄덕끄덕 하고 다음 질문을 하시더라구요.

그만큼 필수로 되어버린 것 같습니다.

Git 은 소스관리도 좋고 예전소스로 다시 복원도 할 수 있어 완전 강추 드립니다.

오늘은 Git 에서 소스를 잘못 merge 했을 때 reset 하는 방법을 알려 드리겠습니다.

 

1. git log 명령어로 해당 커밋 찾기

git log

 

2. reset 으로 해당 커밋으로 이동 하기

git reset b0ed28......

 

3. push -f 옵션으로 remote 에 덮어 씌우기

git push -f origin master

 

이렇게 하면 잘못 merge 했다가도 다시 쉽게 원복 할 수 있습니다.

저는 Redis 를 Lock 을 걸때 ..

그러니까 하나의 프로그램을 실행 하고 마칠 때 까지 중복 실행이 안되게끔 하기 위해서 Redis 를 쓰고 있습니다.

1. 서버 접속 명령어

redis-cli

docker (docker-compose) 에서 redis 를 실행 하신다면 아래와 같이 하시면 됩니다.

docker-compose exec redis redis-cli

 

접속 되면 아래와 같이 ip:port> 커맨드 입력창이 나오게 됩니다.

redis command

2. 입력 하기

set 명령어로 key, value 쌍으로 입력하여 저장 합니다.

예) set key_name value_name

 

3. 입력 한 값 찾기

get 명령어로 key 값을 입력 하면 됩니다

예) get key_name

 

4. 모든 키값 찾기

keys * 

 

5. 값 삭제 하기

del 명령어로 key 값을 입력 하면 됩니다.

예) del key_name

ubuntu 를 윈도우에서 실행 했을 때 아래와 같이

Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x800703fa
Error: 0x800703fa ?? ??? ? ????? ??? ??? ??? ??? ????.

Press any key to continue...

이런식으로 나오고 아무키나 클릭 하면 창이 닫힌다면

1. cmd 관리자 권한 실행
2. sc stop LxssManager 입력 후 엔터
3. sc start LxssManager 입력 후 엔터

Ubuntu 재실행

 

 

+ Recent posts