tcl 스크립트를 보다 보면 맨 마지막 "\" 를 입력하여 한줄짜리 명령을 다중 라인으로 처리하는 경우가 있다. 그리고 문법상으로 {, [, ( 이런 오픈 브레이스 이후의 멀티라인도 한 줄로 처리할 수 있도록 하는 것이 필요하다.
이런 찾아내서 한줄로 만드는 코드 샘플을 보자.
이 코드는 괄호 { }
사이에 있는 단어를 추출하는 기능을 포함하며, 줄 끝에 있는 \
는 단순한 줄바꿈으로 처리하여 해당 줄을 다음 줄과 결합하지만, 공백 없이 연결합니다.
import re
def join_lines(lines):
combined_lines = []
open_brackets = {'{': '}'}
stack = []
current_line = ""
for line in lines:
original_line = line.rstrip() # 줄 끝의 공백 제거
if original_line.endswith('\\'):
current_line += original_line[:-1] # \ 제거
continue
current_line += original_line
for char in current_line:
if char in open_brackets:
stack.append(open_brackets[char])
elif stack and char == stack[-1]:
stack.pop()
# If the stack is empty, meaning all brackets are closed or no brackets were found:
if not stack:
combined_lines.append(current_line)
current_line = ""
else:
current_line += " " # Add a space if the line ends but stack is not empty (i.e., bracket not closed)
if current_line: # Add any remaining content
combined_lines.append(current_line)
return combined_lines
def extract_words_within_braces(lines):
words = []
for line in lines:
# Extract words within braces
matches = re.findall(r'\{([^}]*)\}', line)
words.extend([word.strip() for word in matches])
return words
def main():
print("여러 줄의 문자열을 입력하세요. 각 줄은 엔터로 구분됩니다.")
print("입력을 마치려면 두 번 엔터하세요.")
input_lines = []
while True:
try:
line = input()
if line == "":
break
input_lines.append(line)
except EOFError:
break
combined_lines = join_lines(input_lines)
words = extract_words_within_braces(combined_lines)
print("\n조합된 결과:")
for line in combined_lines:
print(line)
print("\n괄호 안의 단어들:")
for word in words:
print(word)
if __name__ == "__main__":
main()
설명:
join_lines
함수는 입력된 문자열을 받아서 연결할 필요가 있는 경우 연결하고, 줄의 끝이\
로 끝날 경우 다음 줄과 결합합니다.{}
내부의 내용을 유지하면서 처리합니다.extract_words_within_braces
함수는 결합된 문자열에서{}
내의 단어를 추출합니다.main
함수에서는 사용자로부터 여러 줄의 입력을 받아 처리한 후, 결과와 괄호 안의 단어들을 출력합니다.
이 스크립트는 입력된 문자열 중에서 괄호 {}
사이에 있는 내용을 추출하는 데 유용하게 사용할 수 있습니다.
'IT > 파이썬' 카테고리의 다른 글
python-docx - 특정 문단 이후에 문단, 테이블 추가하기 (0) | 2024.06.11 |
---|---|
'\n'.join(str_buffer) 구문 설명 - join 자동 루프 (0) | 2024.05.21 |
frozenset 의미와 사용 예제 (0) | 2024.05.17 |
@classmethod 사용 예 (0) | 2024.05.17 |
파이썬에서 파일 열기: `w`와 `wt` 모드의 차이점 및 한글 인코딩 처리 (0) | 2024.05.16 |