[python] 파이썬 문자열에서 어떻게 백분율 (%)을 이스케이프 처리 할 수 ​​있습니까?

다음 코드가 있습니다

test = "have it break."
selectiveEscape = "Print percent % in sentence and not %s" % test

print(selectiveEscape)

출력을 얻고 싶습니다.

Print percent % in sentence and not have it break.

실제로 일어나는 일 :

    selectiveEscape = "Use percent % in sentence and not %s" % test
TypeError: %d format: a number is required, not str



답변

>>> test = "have it break."
>>> selectiveEscape = "Print percent %% in sentence and not %s" % test
>>> print selectiveEscape
Print percent % in sentence and not have it break.


답변

또는 Python 2.6부터는 새로운 문자열 형식을 사용할 수 있습니다 ( PEP 3101에 설명되어 있음 ).

'Print percent % in sentence and not {0}'.format(test)

문자열이 더 복잡해지면 특히 편리합니다.


답변

%%% sign을 인쇄 하는 데 사용 하십시오.


답변

다음 문자에 따라 항상 특별한 의미를 가지 %므로 선택적으로 이스케이프 할 수 없습니다 %.

에서 문서 파이썬, 해당 섹션에서 두 번째 테이블의 bottem에서, 그것은 상태 :

'%'        No argument is converted, results in a '%' character in the result.

따라서 다음을 사용해야합니다.

selectiveEscape = "Print percent %% in sentence and not %s" % (test, )

(에 대한 인수로 튜플의 급행 변경 사항에 유의하십시오 %)

위의 내용을 알지 못하면 나는했을 것입니다 :

selectiveEscape = "Print percent %s in sentence and not %s" % ('%', test)

이미 알고있는 지식으로


답변

형식 지정 템플릿을 파일에서 읽은 경우 내용이 백분율 기호를 두 배로 늘릴 수없는 경우 백분율 문자를 감지하여 자리 표시 자의 시작인지 여부를 프로그래밍 방식으로 결정해야합니다. 그런 다음 파서는 또한 %d(및 사용 가능한 다른 문자)와 같은 시퀀스를 인식해야합니다 %(xxx)s.

텍스트에 중괄호가 포함될 수있는 새로운 형식에서도 비슷한 문제가 발생할 수 있습니다.


답변

당신이 사용하는 경우 파이썬 3.6 이상을, 당신이 사용할 수있는 F-문자열 :

>>> test = "have it break."
>>> selectiveEscape = f"Print percent % in sentence and not {test}"
>>> print(selectiveEscape)
... Print percent % in sentence and not have it break.


답변

서브 플롯 제목을 인쇄하는 다른 방법을 시도했지만 작동 방식을 살펴보십시오. 라텍스를 사용할 때 다릅니다.

일반적인 경우 ‘%%’및 ‘string’+ ‘%’와 함께 작동합니다.

라텍스를 사용하면 ‘string’+ ‘\ %’

따라서 일반적인 경우 :

import matplotlib.pyplot as plt
fig,ax = plt.subplots(4,1)
float_number = 4.17
ax[0].set_title('Total: (%1.2f' %float_number + '\%)')
ax[1].set_title('Total: (%1.2f%%)' %float_number)
ax[2].set_title('Total: (%1.2f' %float_number + '%%)')
ax[3].set_title('Total: (%1.2f' %float_number + '%)')

%가 포함 된 제목 예

라텍스를 사용하는 경우 :

import matplotlib.pyplot as plt
import matplotlib
font = {'family' : 'normal',
        'weight' : 'bold',
        'size'   : 12}
matplotlib.rc('font', **font)
matplotlib.rcParams['text.usetex'] = True
matplotlib.rcParams['text.latex.unicode'] = True
fig,ax = plt.subplots(4,1)
float_number = 4.17
#ax[0].set_title('Total: (%1.2f\%)' %float_number) This makes python crash
ax[1].set_title('Total: (%1.2f%%)' %float_number)
ax[2].set_title('Total: (%1.2f' %float_number + '%%)')
ax[3].set_title('Total: (%1.2f' %float_number + '\%)')

우리는 이것을 얻습니다 :
%와 라텍스가있는 제목 예제