파이썬에서 문자열과 정수를 연결


136

파이썬에서 당신이 있다고 말하십시오.

s = "string"
i = 0
print s+i

당신이 쓸 수 있도록 오류를 줄 것입니다

print s+str(i) 

오류가 발생하지 않습니다.

나는 이것이 int와 string concatenation을 다루는 매우 서투른 방법이라고 생각합니다. Java조차도 이러한 종류의 연결을 수행하기 위해 String으로 명시 적으로 캐스팅 할 필요가 없습니다. 이런 종류의 연결을 수행하는 더 좋은 방법이 있습니까? 즉, 파이썬에서 명시 적으로 캐스팅하지 않습니까?


8
파이썬은 강력한 유형 ( en.wikipedia.org/wiki/Strong_typing ) 언어 이기 때문에 더 많은 것을 이해하기 위해 구글에 :).
mouad

3
모호성을 초래할 것입니다. 무엇의 결과가 될 것입니다 "1" + 1, 2또는 "11"그 이유는 무엇입니까?
Buddy

1
버디 나는 당신이 무엇을 생각하는지 확신하지 못하지만 그냥 가정하지 마십시오. 내 문제는 두 가지 다른 객체 유형을 연결하는 것이었고 해결책을 찾았습니다. 파이썬에서 얼마나 많은 프로그램을 작성했는지 모르지만 두 문자열 중 하나가 없음 유형 일 때 오류가 발생하도록 두 문자열을 연결하려고 시도한 적이 있습니까? 명시 적으로 검사를 수행 할 수는 있지만 코드의 일부입니다. 이런 종류의 일은 오류를 기록해야 할 때 필요합니다.
specialscope

2
그냥 s+str(i), 당신은 맞습니다!

답변:



87

문자열 형식이 없습니다 :

>> print 'Foo',0
Foo 0

2
이것은 인쇄에서 잘 작동하지만 변수에 문자열로 할당 될 수 없습니다. Set 객체를 제공합니다.
specialscope

2
또한 v3 print() 기능 을 사용하고 일부 매개 변수를 설정 하지 않는 한 두 항목 사이에 여분의 공백이 있습니다 .
Levon

34

새로운 스타일의 .format()메서드를 사용하는 문자열 형식 (기본값은 .format ()에서 제공) :

 '{}{}'.format(s, i)

또는 더 오래되었지만 "여전히 붙어"- %포맷 :

 '%s%d' %(s, i)

위의 두 예제에서 연결된 두 항목 사이 에는 공간 이 없습니다 . 공간이 필요한 경우 단순히 형식 문자열로 추가 할 수 있습니다.

이것들은 항목을 연결하는 방법, 항목 사이의 간격 등에 대한 많은 제어 및 유연성을 제공 합니다. 형식 사양에 대한 자세한 내용 은이 내용을 참조하십시오 .


14

파이썬은 흥미로운 언어인데, 주어진 작업을 수행 할 수있는 "명백한"방법이 일반적으로 있지만 유연성은 여전히 ​​존재합니다.

s = "string"
i = 0

print (s + repr(i))

위의 코드 스 니펫은 Python3 구문으로 작성되었지만 버전 3이 필수가 될 때까지 인쇄 후 괄호는 항상 허용됩니다 (선택 사항).

도움이 되었기를 바랍니다.

케이틀린




0

Python 3.6 이상에서는 다음과 같이 형식을 지정할 수 있습니다.

new_string = f'{s} {i}'
print(new_string)

또는 그냥 :

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