Łączenie ciągów znaków i liczb całkowitych w Pythonie

136

W Pythonie powiedz, że masz

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

wystąpi błąd, więc piszesz

print s+str(i) 

aby nie otrzymać błędu.

Myślę, że jest to dość niezgrabny sposób obsługi łączenia int i string. Nawet Java nie potrzebuje jawnego rzutowania na String, aby wykonać tego rodzaju konkatenację. Czy jest lepszy sposób na wykonanie tego rodzaju konkatenacji, tj. Bez jawnego rzutowania w Pythonie?

zakres specjalny
źródło
8
Dzieje się tak, ponieważ Python jest silnie wpisany ( en.wikipedia.org/wiki/Strong_typing ) w języku (coś, co można znaleźć w Google, aby dowiedzieć się więcej :)).
mouad
3
Doprowadziłoby to do niejasności. Jaki byłby wynik "1" + 1, 2czy "11"i dlaczego?
Kolego,
1
Kolego, nie jestem pewien, o czym myślisz, ale proszę nie zakładaj. Mój problem polegał na połączeniu 2 różnych typów obiektów i znalazłem rozwiązanie. Nie wiem, ile zaprogramowałeś w Pythonie, ale czy kiedykolwiek próbowałeś połączyć dwa ciągi tylko po to, aby uzyskać błąd, gdy jeden z nich jest typu Brak? Możesz przeprowadzić jawne kontrole, ale to tylko dodatkowy fragment kodu. Takie rzeczy są wymagane, gdy chcesz rejestrować błędy.
specialscope
2
Tylko s+str(i)i masz rację!

Odpowiedzi:

87

Brak formatowania ciągów:

>> print 'Foo',0
Foo 0
Burhan Khalid
źródło
2
Działa to dobrze z print, ale nie można go przypisać do zmiennej jako ciągu. Daje obiekt Set.
specialscope
2
Pozostaje również w dodatkowym spacji między dwoma elementami, chyba że używasz print() funkcji v3 i ustawisz niektóre z jej parametrów.
Levon,
34

Formatowanie napisów przy użyciu metody nowego stylu .format()(z domyślnymi wartościami .format () ):

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

Lub starsza, ale „wciąż trzymająca się” - %formatowanie:

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

W obu powyższych przykładach nie ma spacji między dwoma połączonymi elementami. Jeśli potrzebna jest przestrzeń, można ją po prostu dodać w ciągach formatu.

Zapewniają one dużą kontrolę i elastyczność w zakresie łączenia elementów, przestrzeni między nimi itp. Aby uzyskać szczegółowe informacje na temat specyfikacji formatu, zobacz to .

Levon
źródło
14

Python jest interesującym językiem, ponieważ podczas gdy zazwyczaj istnieje jeden (lub dwa) „oczywiste” sposoby wykonania danego zadania, elastyczność nadal istnieje.

s = "string"
i = 0

print (s + repr(i))

Powyższy fragment kodu jest napisany w składni Python3, ale nawiasy po print były zawsze dozwolone (opcjonalnie), dopóki wersja 3 nie uczyniła ich obowiązkowymi.

Mam nadzieję że to pomoże.

Caitlin

CaitlinG
źródło
5

format () może służyć do łączenia ciągów znaków i liczb całkowitych

print(s+"{}".format(i))
Aakash Wadhwa
źródło
0

jeśli chcesz tylko wydrukować, możesz to zrobić:

print(s , i)
Daniel Jiménez
źródło
0

w Pythonie 3.6 i nowszych można go sformatować tak:

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

Lub tylko:

print(f'{s} {i}')
Kasra Najafi
źródło