Strings and String Formatting
Способы форматирования строк в Python (May 4)
Следующий оператор выводит на печать текст без дополнительной обработки:
print("In 2021 the GDP of America is $22.99T")
Получаем:
In 2021 the GDP of America is $22.99T
Допустим параметры (название страны, год и ВВП) заданы в переменных:
year = 2021
country = 'America'
value = 22.99
Следующие способы формирования текста выдают тот же самый результат:
print('In ' + str(year) + ' the GDP of ' + country + ' is $' + str(value) + 'T')
print('In %d the GDP of %s is $%.2fT' % (year, country, value))
print('In {} the GDP of {} is ${}T'.format(year, country, value))
print('In {0} the GDP of {1} is ${2}T'.format(year, country, value))
print('In {year} the GDP of {country} is ${value}T'.format(
year=year, country=country, value=value
))
data = {'year':year, 'country':country, 'value':value}
print('In {year} the GDP of {country} is ${value}T'.format(**data))
print(f'In {year} the GDP of {country} is ${value}T')
Наиболее современным является именно последний вариант, который использует f-string (fast string).
Code in https://onlinegdb.com/xQG_uyOnrj
Формирование однострочного и многострочного текста в Python (May 4)
Следующие четыре примера формируют однострочный текст:
print('"There should be no such thing as boring mathematics." -- Dijkstra\'s quote')
print("\"There should be no such thing as boring mathematics.\" -- Dijkstra's quote")
print('"There should be no such thing \
as boring mathematics." \
-- Dijkstra\'s quote')
print('"There should be no such thing '
+ 'as boring mathematics." '
+ "-- Dijkstra's quote")
Вывод на экран:
"There should be no such thing as boring mathematics." -- Dijkstra's quote
А следующие пять примеров формируют многострочный (точнее двухстрочный) текст:
print('"There should be no such thing as boring mathematics." \n\t-- Dijkstra\'s quote')
print("\"There should be no such thing as boring mathematics.\" \n\t-- Dijkstra's quote")
quote = '"There should be no such thing as boring mathematics." \n\
\t-- Dijkstra\'s quote'
print(quote)
print(""""There should be no such thing as boring mathematics."
-- Dijkstra\'s quote""")
quote = """"There should be no such thing as boring mathematics."
-- Dijkstra\'s quote"""
print(quote)
Вывод на экран:
"There should be no such thing as boring mathematics."
-- Dijkstra's quote
The code to play: https://onlinegdb.com/tVtkO7Mcc
Знакомство с методами str.split()
и str.join()
(May 4)
Используем split()
, чтобы поделить текст на слова.
- Например:
text.split(' ')
делит строку text используя разделитель' '
(space). Метод возвращает список строк (list of str).
А чтобы склеить слова, используем обратный метод: join()
.
- Например,
' '.join(words)
соединит все слова из списка words в одну строку, склеивая их символом' '
:
quote = 'Simplicity is prerequisite for reliability.'
print(f"Dijkstra's quote: {quote}")
words = quote.split(' ')
print(f"Split using ' ': {words}")
text = ' '.join(words)
print(f"Join using ' ': {text}")
print()
Можно использовать композицию вызовов (вызвать метод на результате предыдущего метода):
print(' '.join(quote.split()))
print(' '.join(words).split(' '))
print()
А теперь сравниваем, что результат работы двух функций производит оригинал:
print(f'the produced text equals original quote: {text == quote}')
print()
print(f'" ".join(quote.split(" ")) == quote: {" ".join(quote.split(" ")) == quote}')
print(f'" ".join(words).split(" ") == words: {" ".join(words).split(" ") == words}')
Code to play: https://onlinegdb.com/l1GEcnq3s