반응형
여러 줄 문자열 내에서 파이썬 대체
내 모듈 중 하나(t_mesg.py)에는 다음과 같은 다중 줄 문자열이 있습니다:
tm = """
this
is currently
a
test
message
"""
문자열의 특정 부분을 다른 부분으로 교체해야 하는 다른 모듈로 이를 가져옵니다. 그러나 수입품에서는 새 라인 차도 들어오고 그래서 작동하지 않을 것이다.
>>> from t_mesg import tm
>>> tm
'\nthis\nis \na\ntest\nmessage\n'
이 가져온 문자열을 처리하여 "is"를 "is"로 변경해야 하는 경우 문자열이 이렇게 보이도록 어떻게 처리해야 합니까?
tm = """
this
is not currently
a
test
message
"""
TL;DR - 새 줄 문자를 무시하고 교체를 수행하려면 어떻게 해야 합니까?
기본적으로 문자열에서 단어 바꾸기를 수행하려고 합니다. 정규 표현식과 단어 경계를 사용하여 할 수 있으며, 새 줄을 사용하든 사용하지 않든 간에:
import re
s = "this\n is \n a good \n question"
s = re.sub(r"\bis\b","is not",s)
print(s)
결과:
this
is not
a good
question
(두 단어 사이에 더 많은 새 줄이 있을 수 있고 이 줄이 보존될 수 있음)을 사용하여 되돌릴 수 있습니다
s = re.sub(r"\bis\b(\s+)\bnot\b",r"is\1",s)
print(s)
인쇄:
this
is
a good
question
좀 더 나아가, 구두점과 다른 비알파적인 것들을 소개할 수도 있고, 당신이 사용하는 것은 여전히 다음을 관리할 수 있다:
s = "this\n is - not - \n a good \n question"
s = re.sub(r"\bis(\W+)not\b",r"is\1",s)
print(s)
인쇄물("아니오"는 없어졌지만 앞의 대시는 없어지지 않음):
this
is - -
a good
question
문자열을 분할해서 단어를 교체하고 배열을 다시 결합하는 시도를 해볼 수 있습니다.
tm_array = tm.split("\n")
tm_array[1] = "is not"
new_tm = '\n'.join(tm_array)
교체 방법은 변경된 값을 동일한 변수에 저장하지 않습니다. 다른 변수에 저장하고 인쇄해야 합니다.
tm = tm.replace('\nis \n', '\nis not\n')
반응형
'개발하자' 카테고리의 다른 글
파이썬에서 코드 객체를 만드는 방법은? (0) | 2023.09.26 |
---|---|
how to select a long list of id's in sql using python (0) | 2023.09.25 |
vscode 주피터에서 파이토치 진행률 막대가 사라짐 (0) | 2023.09.24 |
FastAPI에서 동일한 앱에서 다른 API를 호출하는 방법은 무엇입니까? (1) | 2023.09.24 |
주피터 노트북 셀의 내용을 이미지로 내보내기 (0) | 2023.09.23 |