문자열 안에 변수를 어떻게 넣습니까?


246

나는 넣어 싶습니다 intstring. 이것이 내가 지금하고있는 일입니다.

num = 40
plot.savefig('hanning40.pdf') #problem line

몇 가지 다른 숫자로 프로그램을 실행해야하므로 루프를 수행하고 싶습니다. 그러나 다음과 같이 변수를 삽입하면 작동하지 않습니다.

plot.savefig('hanning', num, '.pdf')

파이썬 문자열에 변수를 어떻게 삽입합니까?

답변:


163
plot.savefig('hanning(%d).pdf' % num)

%문자열을 다음과 같은 경우 운영자는, 당신은 형식 코드를 통해 해당 문자열합니다 (에 값을 삽입 할 수 있습니다 %d이 경우). 자세한 내용은 Python 설명서를 참조하십시오.

https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting


39
있습니다 %연산자는 파이썬 3.1으로 사용되지 않습니다. 새로운 선호되는 방법은 PEP 3101.format() 에서 논의 되고 Dan McDougall의 답변에서 언급 된 방법을 이용하는 것입니다.
Chris Mueller

498

아, 여러 가지 방법으로 ...

문자열 연결 :

plot.savefig('hanning' + str(num) + '.pdf')

변환 지정자 :

plot.savefig('hanning%s.pdf' % num)

지역 변수 이름 사용하기 :

plot.savefig('hanning%(num)s.pdf' % locals()) # Neat trick

사용 str.format():

plot.savefig('hanning{0}.pdf'.format(num)) # Note: This is the new preferred way

f- 문자열 사용 :

plot.savefig(f'hanning{num}.pdf') # added in Python 3.6

사용 string.Template:

plot.savefig(string.Template('hanning${num}.pdf').substitute(locals()))

16
여러 개의 인수와 함께 형식 문자열 연산자를 사용하려면 튜플을 피연산자로 사용할 수 있습니다 'foo %d, bar %d' % (foo, bar).
fiedl

12
깔끔한 트릭 종류의 새로운 형식 구문도 작동합니다.plot.savefig('hanning{num}s.pdf'.format(**locals()))
pix

13
Python 3.6에서 f- 문자열을 도입하면 이제로 쓸 수 있습니다 plot.savefig(f'hanning{num}.pdf'). 이 정보에 대한 답변을 추가했습니다.
joelostblom

전역 변수를 호출하는 함수 내에서 locals ()를 사용하는 데 문제가있었습니다. 대신 % globals ()를 사용했습니다
lobi


17

게시 한 모든 코드가 정확히 무엇인지 확실하지 않지만 제목에 제기 된 질문에 대답하기 위해 str을 일반적인 문자열 연결 함수로 +를 사용할 수 있습니다.

"hello " + str(10) + " world" = "hello 10 world"

희망이 도움이됩니다!


6
이 답변은 정확한 반면, 건물 문자열 +은 매우 비싸기 때문에 피해야합니다
slayton

6

일반적으로 다음을 사용하여 문자열을 만들 수 있습니다.

stringExample = "someString " + str(someNumber)
print(stringExample)
plot.savefig(stringExample)

4

문자열에 여러 값을 넣고 싶다면 사용할 수 있습니다 format

nums = [1,2,3]
plot.savefig('hanning{0}{1}{2}.pdf'.format(*nums))

문자열이 hanning123.pdf됩니다. 이것은 모든 배열로 수행 할 수 있습니다.


3

확장 버전이 필요했습니다. 문자열에 단일 숫자를 포함시키는 대신 'file1.pdf', 'file2.pdf'형식의 일련의 파일 이름을 생성해야했습니다. 일했다 :

['file' + str(i) + '.pdf' for i in range(1,4)]

-1

num 가변을 문자열로 캐스팅해야합니다.

str(num)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.