개발하자
여러 줄 문자열 내에서 파이썬 대체
Cuire
2023. 9. 25. 04:04
반응형
여러 줄 문자열 내에서 파이썬 대체
내 모듈 중 하나(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')
반응형