Dream on Python

Posts About Python & Programming

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(), чтобы поделить текст на слова.

А чтобы склеить слова, используем обратный метод: join().

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