З'єднання рядка та цілого числа в python


136

У python кажуть, що у вас є

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

дасть вам помилку, щоб ви писали

print s+str(i) 

щоб не помилитися.

Я думаю, що це досить незграбний спосіб впоратися з об'єднанням int і string. Навіть Java не потребує явного кастингу для String для такого роду конкатенації. Чи є кращий спосіб зробити такий тип конкатенації, тобто без явного кастингу в Python?


8
Це тому, що Python сильно набрав мову ( en.wikipedia.org/wiki/Strong_typing ) мову (щось для гугл, щоб зрозуміти більше :)).
муад

3
Це призвело б до неоднозначності. Що було б результатом "1" + 1, 2або "11"і чому?
Бадді

1
Друже, я не впевнений, що ти думаєш, але, будь ласка, не припускай просто. Моя проблема полягала в об'єднанні двох різних типів об'єктів, і я знайшов рішення. Я не знаю, скільки ви програмували в python, але ви коли-небудь намагалися об'єднати два рядки, щоб отримати помилку лише тоді, коли одна з них не має типу None? Ви можете робити явні перевірки, але це лише додатковий біт коду. Такі речі потрібні, коли потрібно реєструвати помилки.
спецскоп

2
Просто s+str(i), і ти маєш рацію!

Відповіді:



87

Немає форматування рядків:

>> print 'Foo',0
Foo 0

2
Це буде добре працювати з друком, але не може бути призначене змінній як рядок. Це дає об'єкт Set.
спецскоп

2
Він також дотримується додаткової заготовки між двома пунктами, якщо ви не використовуєте v3 print() функцію і встановити деякі з його параметрів.
Левон

34

Форматування рядків, використовуючи .format()метод нового стилю (з типовими параметрами .format () забезпечує):

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

Або старші, але "все ще тримаються навколо", % тримаються -форматування:

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

В обох прикладах вище є немає між двома об'єднаними елементами місця. Якщо потрібен простір, його можна просто додати до рядків формату.

Вони забезпечують великий контроль та гнучкість щодо об'єднання елементів, пробілу між ними тощо. Детальніше про специфікації формату див. У цьому .


14

Python - цікава мова тим, що, як правило, існує один (або два) "очевидні" способи виконання будь-якого заданого завдання, гнучкість все ще існує.

s = "string"
i = 0

print (s + repr(i))

Вищенаведений фрагмент коду записаний у синтаксисі Python3, але дужки після друку завжди були дозволені (необов’язково), поки версія 3 не зробила їх обов'язковими.

Сподіваюся, це допомагає.

Кейтлін


5

Метод format () може використовуватися для об'єднання рядків і цілих чисел

print(s+"{}".format(i))


0

у python 3.6 та новіших версіях ви можете відформатувати його так:

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

або просто:

print(f'{s} {i}')
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.