Поиск…


Синтаксис

  • str.capitalize () -> str
  • str.casefold () -> str [только для Python> 3.3]
  • str.center (width [, fillchar]) -> str
  • str.count (sub [, start [, end]]) -> int
  • str.decode (encoding = "utf-8" [, errors]) -> unicode [только в Python 2.x]
  • str.encode (encoding = "utf-8", errors = "strict") -> bytes
  • str.endswith (суффикс [, start [, end]]) -> bool
  • str.expandtabs (tabsize = 8) -> str
  • str.find (sub [, start [, end]]) -> int
  • str.format (* args, ** kwargs) -> str
  • str.format_map (mapping) -> str
  • str.index (sub [, start [, end]]) -> int
  • str.isalnum () -> bool
  • str.isalpha () -> bool
  • str.isdecimal () -> bool
  • str.isdigit () -> bool
  • str.isidentifier () -> bool
  • str.islower () -> bool
  • str.isnumeric () -> bool
  • str.isprintable () -> bool
  • str.isspace () -> bool
  • str.istitle () -> bool
  • str.isupper () -> bool
  • str.join (iterable) -> str
  • str.ljust (width [, fillchar]) -> str
  • str.lower () -> str
  • str.lstrip ([chars]) -> str
  • static str.maketrans (x [, y [, z]])
  • str.partition (sep) -> (head, sep, tail)
  • str.replace (old, new [, count]) -> str
  • str.rfind (sub [, start [, end]]) -> int
  • str.rindex (sub [, start [, end]]) -> int
  • str.rjust (width [, fillchar]) -> str
  • str.rpartition (sep) -> (head, sep, tail)
  • str.rsplit (sep = None, maxsplit = -1) -> список строк
  • str.rstrip ([chars]) -> str
  • str.split (sep = None, maxsplit = -1) -> список строк
  • str.splitlines ([keepends]) -> список строк
  • str.startswith (prefix [, start [, end]]) -> book
  • str.strip ([chars]) -> str
  • str.swapcase () -> str
  • str.title () -> str
  • str.translate (table) -> str
  • str.upper () -> str
  • str.zfill (width) -> str

замечания

Строковые объекты неизменяемы, что означает, что они не могут быть изменены на месте, как может выглядеть список. Из-за этого методы встроенного типа str всегда возвращают новый объект str , который содержит результат вызова метода.

Изменение капитализации строки

Строковый тип Python предоставляет множество функций, которые действуют на капитализацию строки. Они включают :

  • str.casefold
  • str.upper
  • str.lower
  • str.capitalize
  • str.title
  • str.swapcase

С unicode-строками (по умолчанию в Python 3) эти операции не являются 1: 1 сопоставлениями или обратимыми. Большинство из этих операций предназначены для показа, а не для нормализации.


Python 3.x 3.3

str.casefold()

str.casefold создает строчную строку, подходящую для сравнения без str.casefold регистра. Это более агрессивно, чем str.lower и может изменять строки, которые уже находятся в нижнем регистре, или увеличивать длину строк и не предназначены для отображения.

"XßΣ".casefold()
# 'xssσ'

"XßΣ".lower()
# 'xßς'

Преобразования, происходящие в casefolding, определяются консорциумом Unicode в файле CaseFolding.txt на их веб-сайте.


str.upper()

str.upper берет каждый символ в строке и преобразует его в свой верхний регистр, например:

"This is a 'string'.".upper()
# "THIS IS A 'STRING'."

str.lower()

str.lower делает обратное; он принимает каждый символ в строке и преобразует его в его нижний регистр:

"This IS a 'string'.".lower()
# "this is a 'string'."

str.capitalize()

str.capitalize возвращает str.capitalize версию строки, т. е. делает первый символ верхним регистром, а остальные ниже:

"this Is A 'String'.".capitalize() # Capitalizes the first character and lowercases all others
# "This is a 'string'."

str.title()

str.title возвращает версию строки с заголовком, то есть каждая буква в начале слова выполнена в верхнем регистре, а все остальные - в нижнем регистре:

"this Is a 'String'".title()
# "This Is A 'String'"

str.swapcase()

str.swapcase возвращает новый строковый объект, в котором все символы нижнего регистра заменяются на верхний регистр, а все символы верхнего регистра - ниже:

"this iS A STRiNG".swapcase() #Swaps case of each character
# "THIS Is a strIng"

Использование методов класса str

Стоит отметить, что эти методы можно назвать либо строковыми объектами (как показано выше), либо как метод класса класса str (с явным вызовом str.upper и т. Д.),

str.upper("This is a 'string'")
# "THIS IS A 'STRING'"

Это наиболее полезно при применении одного из этих методов ко многим строкам сразу, скажем, к функции map .

map(str.upper,["These","are","some","'strings'"])
# ['THESE', 'ARE', 'SOME', "'STRINGS'"]

Разделить строку на основе разделителя на список строк

str.split(sep=None, maxsplit=-1)

str.split принимает строку и возвращает список подстрок исходной строки. Поведение отличается в зависимости от того, предоставлен или исключен аргумент sep .

Если sep не предоставлен или None , то расщепление происходит везде, где есть пробелы. Однако ведущее и завершающее пробелы игнорируются, а несколько последовательных символов пробелов обрабатываются так же, как один символ пробела:

>>> "This is a sentence.".split()
['This', 'is', 'a', 'sentence.']

>>> " This is    a sentence.  ".split()
['This', 'is', 'a', 'sentence.']

>>> "            ".split()
[]

Параметр sep может использоваться для определения строки разделителя. Исходная строка разделяется на строку разделителя, и сам разделитель отбрасывается. Несколько последовательных разделителей не обрабатываются так же, как одно вхождение, а скорее создают пустые строки.

>>> "This is a sentence.".split(' ')
['This', 'is', 'a', 'sentence.']

>>> "Earth,Stars,Sun,Moon".split(',')
['Earth', 'Stars', 'Sun', 'Moon']

>>> " This is    a sentence.  ".split(' ')
['', 'This', 'is', '', '', '', 'a', 'sentence.', '', '']

>>> "This is a sentence.".split('e')
['This is a s', 'nt', 'nc', '.']

>>> "This is a sentence.".split('en')
['This is a s', 't', 'ce.']

По умолчанию используется разделение на каждое вхождение разделителя, однако параметр maxsplit ограничивает количество разбиений, которые происходят. Значение по умолчанию -1 означает лимит:

>>> "This is a sentence.".split('e', maxsplit=0)
['This is a sentence.']

>>> "This is a sentence.".split('e', maxsplit=1)
['This is a s', 'ntence.']

>>> "This is a sentence.".split('e', maxsplit=2)
['This is a s', 'nt', 'nce.']

>>> "This is a sentence.".split('e', maxsplit=-1)
['This is a s', 'nt', 'nc', '.']

str.rsplit(sep=None, maxsplit=-1)

str.rsplit («right split») отличается от str.split («left split»), когда maxsplit . Разделение начинается в конце строки, а не в начале:

>>> "This is a sentence.".rsplit('e', maxsplit=1)
['This is a sentenc', '.']

>>> "This is a sentence.".rsplit('e', maxsplit=2)
['This is a sent', 'nc', '.']

Примечание . Python указывает максимальное количество выполняемых разбиений , в то время как большинство других языков программирования определяют максимальное количество созданных подстрок . Это может создать путаницу при переносе или сравнении кода.

Замените все вхождения одной подстроки на другую подстроку

У str типа Python также есть метод для замещения вхождения одной подстроки другой подстрокой в ​​заданной строке. Для более требовательных случаев можно использовать re.sub .


str.replace(old, new[, count]) :

str.replace принимает два аргумента old и new содержащие old подстроку, которая должна быть заменена new подстрокой. Необязательный аргумент count указывает количество замен:

Например, чтобы заменить 'foo' на 'spam' в следующей строке, мы можем вызвать str.replace со old = 'foo' и new = 'spam' :

>>> "Make sure to foo your sentence.".replace('foo', 'spam')
"Make sure to spam your sentence."

Если данная строка содержит несколько примеров, которые соответствуют old аргументу, все вхождения заменяются значением, указанным в new :

>>> "It can foo multiple examples of foo if you want.".replace('foo', 'spam')
"It can spam multiple examples of spam if you want."

если, конечно, мы не даем значение для count . В этом случае count экземпляров собираются заменить:

>>> """It can foo multiple examples of foo if you want, \
... or you can limit the foo with the third argument.""".replace('foo', 'spam', 1)
'It can spam multiple examples of foo if you want, or you can limit the foo with the third argument.'

str.format и f-strings: форматирование значений в строку

Python предоставляет функции интерполяции и форматирования строк через функцию str.format , введенную в версии 2.6 и f-строки, введенные в версии 3.6.

Учитывая следующие переменные:

i = 10
f = 1.5
s = "foo"
l = ['a', 1, 2]
d = {'a': 1, 2: 'foo'}

Следующие утверждения эквивалентны

"10 1.5 foo ['a', 1, 2] {'a': 1, 2: 'foo'}"
>>> "{} {} {} {} {}".format(i, f, s, l, d)

>>> str.format("{} {} {} {} {}", i, f, s, l, d)

>>> "{0} {1} {2} {3} {4}".format(i, f, s, l, d)

>>> "{0:d} {1:0.1f} {2} {3!r} {4!r}".format(i, f, s, l, d)

>>> "{i:d} {f:0.1f} {s} {l!r} {d!r}".format(i=i, f=f, s=s, l=l, d=d)
>>> f"{i} {f} {s} {l} {d}"

>>> f"{i:d} {f:0.1f} {s} {l!r} {d!r}"

Для справки, Python также поддерживает квалификаторы C-стиля для форматирования строк. Приведенные ниже примеры эквивалентны приведенным выше, но версии str.format являются предпочтительными из-за преимуществ гибкости, согласованности обозначений и расширяемости:

"%d %0.1f %s %r %r" % (i, f, s, l, d)

"%(i)d %(f)0.1f %(s)s %(l)r %(d)r" % dict(i=i, f=f, s=s, l=l, d=d)

Скобки, используемые для интерполяции в str.format также могут быть пронумерованы для уменьшения дублирования при форматировании строк. Например, следующие эквиваленты:

"I am from Australia. I love cupcakes from Australia!"
>>> "I am from {}. I love cupcakes from {}!".format("Australia", "Australia")

>>> "I am from {0}. I love cupcakes from {0}!".format("Australia")

Хотя официальная документация на python, как обычно, достаточно тщательна, pyformat.info имеет большой набор примеров с подробными объяснениями.

Кроме того, символы { и } могут быть экранированы с помощью двойных скобок:

"{'a': 5, 'b': 6}"
>>> "{{'{}': {}, '{}': {}}}".format("a", 5, "b", 6)

>>> f"{{'{'a'}': {5}, '{'b'}': {6}}"

См. Форматирование строк для получения дополнительной информации. str.format() был предложен в PEP 3101 и f-строках в PEP 498 .

Подсчет количества раз, когда подстрока появляется в строке

Один метод доступен для подсчета количества вхождений подстроки в другой строке str.count .


str.count(sub[, start[, end]])

str.count возвращает int указывающий количество неперекрывающихся вхождений подстроки sub в другой строке. Необязательные аргументы start и end указывают начало и конец, в котором будет выполняться поиск. По умолчанию start = 0 и end = len(str) означает, что вся строка будет искать:

>>> s = "She sells seashells by the seashore."
>>> s.count("sh")
2
>>> s.count("se")
3
>>> s.count("sea")
2
>>> s.count("seashells")
1

Указав другое значение для start , end мы можем получить более локализованный поиск и подсчет, например, если start равно 13 вызов:

>>> s.count("sea", start)
1

эквивалентно:

>>> t = s[start:]
>>> t.count("sea")
1

Проверьте начальные и конечные символы строки

Чтобы проверить начало и окончание заданной строки в Python, можно использовать методы str.startswith() и str.endswith() .


str.startswith(prefix[, start[, end]])

Как следует из названия, str.startswith используется для проверки того, начинается ли заданная строка с заданными символами в prefix .

>>> s = "This is a test string"
>>> s.startswith("T")
True
>>> s.startswith("Thi")
True
>>> s.startswith("thi")  
False

Необязательные аргументы start и end указывают начальную и конечную точки, с которых начнется и закончится тестирование. В следующем примере, указав начальное значение 2 наша строка будет искать с позиции 2 и затем:

>>> s.startswith("is", 2)
True

Это дает True поскольку s[2] == 'i' и s[3] == 's' .

Вы также можете использовать tuple чтобы проверить, начинается ли он с любого из набора строк

>>> s.startswith(('This', 'That'))
True
>>> s.startswith(('ab', 'bc'))
False

str.endswith(prefix[, start[, end]])

str.endswith точно подобен str.startswith с той лишь разницей, что он ищет конечные символы, а не начальные символы. Например, чтобы проверить, заканчивается ли строка с полной остановкой, можно написать:

>>> s = "this ends in a full stop."
>>> s.endswith('.')
True
>>> s.endswith('!')
False

так как при startswith в качестве конечной последовательности может использоваться более одного символа:

>>> s.endswith('stop.')
True
>>> s.endswith('Stop.')
False

Вы также можете использовать tuple чтобы проверить, заканчивается ли он любым набором строк

>>> s.endswith(('.', 'something'))
True
>>> s.endswith(('ab', 'bc'))
False

Тестирование строки, состоящей из

Тип str Python также имеет ряд методов, которые можно использовать для оценки содержимого строки. Это str.isalpha , str.isdigit , str.isalnum , str.isspace . Капитализацию можно протестировать с помощью str.isupper , str.islower и str.istitle .


str.isalpha

str.isalpha принимает аргументов и возвращает True если все символы в данной строке являются алфавитными, например:

>>> "Hello World".isalpha()  # contains a space
False
>>> "Hello2World".isalpha()  # contains a number
False
>>> "HelloWorld!".isalpha()  # contains punctuation
False
>>> "HelloWorld".isalpha()
True

В качестве краевого случая пустая строка оценивается как False при использовании с "".isalpha() .


str.isupper , str.islower , str.istitle

Эти методы проверяют капитализацию в заданной строке.

str.isupper - это метод, возвращающий True если все символы в заданной строке имеют верхний регистр и False противном случае.

>>> "HeLLO WORLD".isupper()
False
>>> "HELLO WORLD".isupper()
True
>>> "".isupper()
False

И наоборот, str.islower - это метод, который возвращает True если все символы в заданной строке имеют строчные буквы и False противном случае.

>>> "Hello world".islower()
False
>>> "hello world".islower()
True
>>> "".islower()
False

str.istitle возвращает значение True если заданная строка имеет название; то есть каждое слово начинается с символа верхнего регистра, за которым следуют строчные буквы.

>>> "hello world".istitle()
False
>>> "Hello world".istitle()
False
>>> "Hello World".istitle()
True
>>> "".istitle()
False

str.isdecimal , str.isdigit , str.isnumeric

str.isdecimal возвращает, является ли строка последовательностью десятичных цифр, подходящей для представления десятичного числа.

str.isdigit содержит цифры не в форме, подходящей для представления десятичного числа, например надстрочных цифр.

str.isnumeric включает любые значения чисел, даже если не цифры, такие как значения вне диапазона 0-9.

            isdecimal    isdigit   isnumeric

12345        True        True       True
១2߃໔5        True        True       True
①²³🄅₅       False       True       True
⑩⒓          False       False      True
Five         False       False      False

Bytestrings ( bytes в Python 3, str в Python 2), поддерживает только isdigit , которая проверяет только основные ASCII-цифры.

Как и в случае str.isalpha , пустая строка оценивается как False .


str.isalnum

Это комбинация str.isalpha и str.isnumeric , в частности, она принимает значение True если все символы в данной строке являются буквенно-цифровыми , то есть они состоят из буквенных или числовых символов:

>>> "Hello2World".isalnum()
True
>>> "HelloWorld".isalnum()
True
>>> "2016".isalnum()
True
>>> "Hello World".isalnum()  # contains whitespace
False

str.isspace

Вычисляет значение True если строка содержит только пробельные символы.

>>> "\t\r\n".isspace()
True
>>> " ".isspace()
True

Иногда строка выглядит «пустой», но мы не знаем, связано ли это с тем, что она содержит просто пробельные символы или вообще не имеет характера

>>> "".isspace()
False

Чтобы покрыть этот случай, нам нужен дополнительный тест

>>> my_str = ''
>>> my_str.isspace()
False
>>> my_str.isspace() or not my_str
True

Но самый короткий способ проверить, является ли строка пустой или просто содержит пробельные символы, - это использовать strip (без аргументов она удаляет все ведущие и завершающие пробельные символы)

>>> not my_str.strip()
True

str.translate: перевод символов в строку

Python поддерживает метод translate по типу str который позволяет вам указать таблицу переводов (используется для замены), а также любые символы, которые необходимо удалить в процессе.

str.translate(table[, deletechars])
параметр Описание
table Это таблица поиска, которая определяет отображение от одного символа к другому.
deletechars Список символов, которые нужно удалить из строки.

Метод maketrans ( str.maketrans в Python 3 и string.maketrans в Python 2) позволяет сгенерировать таблицу переводов.

>>> translation_table = str.maketrans("aeiou", "12345")
>>> my_string = "This is a string!"
>>> translated = my_string.translate(translation_table)
'Th3s 3s 1 str3ng!'

Метод translate возвращает строку, которая представляет собой переведенную копию исходной строки.


Вы можете установить аргумент table None если вам нужно только удалить символы.

>>> 'this syntax is very useful'.translate(None, 'aeiou')
'ths syntx s vry sfl'

Удаление ненужных ведущих / завершающих символов из строки

str.strip три метода, которые позволяют str.strip ведущие и завершающие символы из строки: str.strip , str.rstrip и str.lstrip . Все три метода имеют одну и ту же подпись, и все три возвращают новый строковый объект с удалением ненужных символов.


str.strip([chars])

str.strip действует на заданной строки и удаляет (полоски) или каких - либо ведущих задних символов , содержащихся в аргументе chars ; если chars не указаны или None , все символы пробела удаляются по умолчанию. Например:

>>> "    a line with leading and trailing space     ".strip() 
'a line with leading and trailing space'

Если заданы chars , все символы, содержащиеся в нем, удаляются из строки, которая возвращается. Например:

>>> ">>> a Python prompt".strip('> ')  # strips '>' character and space character 
'a Python prompt'

str.rstrip([chars]) и str.lstrip([chars])

Эти методы имеют сходную семантику и аргументы с str.strip() , их различие лежит в том направлении, с которого они начинаются. str.rstrip() начинается с конца строки, а str.lstrip() разбивается с начала строки.

Например, используя str.rstrip :

>>> "     spacious string      ".rstrip()
'     spacious string'

Хотя, используя str.lstrip :

>>> "     spacious string      ".rstrip()
'spacious string      '

Сравнительные строки, нечувствительные к регистру

Сравнение строки в нечувствительном к регистру образом кажется чем-то тривиальным, но это не так. В этом разделе рассматриваются только строки unicode (по умолчанию в Python 3). Обратите внимание, что Python 2 может иметь небольшие недостатки относительно Python 3 - более поздняя обработка юникода намного более полная.

Первое, что следует отметить, - это то, что конверсии case-remove в unicode не являются тривиальными. Существует текст, для которого text.lower() != text.upper().lower() , например "ß" :

>>> "ß".lower()
'ß'

>>> "ß".upper().lower()
'ss'

Но скажем, вы хотели без "BUSSE" сравнений "BUSSE" и "Buße" . Черт, вы, вероятно, также хотите сравнить "BUSSE" и "BUẞE" равными - это более новая форма капитала. Рекомендуемым способом является использование casefold :

Python 3.x 3.3
>>> help(str.casefold)
"""
Help on method_descriptor:

casefold(...)
      S.casefold() -> str
    
     Return a version of S suitable for caseless comparisons.
"""

Не используйте только lower . Если casefold недоступен, выполнение .upper().lower() помогает (но только несколько).

Тогда вы должны рассмотреть акценты. Если ваш рендерер шрифта хорош, вы, вероятно, думаете "ê" == "ê" - но это не так:

>>> "ê" == "ê"
False

Это потому, что они на самом деле

>>> import unicodedata

>>> [unicodedata.name(char) for char in "ê"]
['LATIN SMALL LETTER E WITH CIRCUMFLEX']

>>> [unicodedata.name(char) for char in "ê"]
['LATIN SMALL LETTER E', 'COMBINING CIRCUMFLEX ACCENT']

Самый простой способ справиться с этим - unicodedata.normalize . Вероятно, вы хотите использовать нормализацию NFKD , но не стесняйтесь проверить документацию. Тогда

>>> unicodedata.normalize("NFKD", "ê") == unicodedata.normalize("NFKD", "ê")
True

Чтобы закончить, здесь это выражается в функциях:

import unicodedata

def normalize_caseless(text):
    return unicodedata.normalize("NFKD", text.casefold())

def caseless_equal(left, right):
    return normalize_caseless(left) == normalize_caseless(right)

Присоедините список строк в одну строку

Строку можно использовать в качестве разделителя для объединения списка строк в одну строку с использованием метода join() . Например, вы можете создать строку, в которой каждый элемент в списке разделяется пробелом.

>>> " ".join(["once","upon","a","time"])
"once upon a time"

В следующем примере разделяются строковые элементы с тремя дефисами.

>>> "---".join(["once", "upon", "a", "time"])
"once---upon---a---time"

Полезные константы модуля String

string модуль Python предоставляет константы для операций, связанных с строкой. Чтобы использовать их, импортируйте string модуль:

>>> import string

string.ascii_letters :

Конкатенация ascii_lowercase и ascii_uppercase :

>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

string.ascii_lowercase :

Содержит все символы ASCII нижнего регистра:

>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'

string.ascii_uppercase :

Содержит все символы ASCII верхнего регистра:

>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

string.digits :

Содержит все десятичные знаковые символы:

>>> string.digits
'0123456789'

string.hexdigits :

Содержит все символы шестнадцатеричной цифры:

>>> string.hexdigits
'0123456789abcdefABCDEF'

string.octaldigits :

Содержит все восьмеричные цифры:

>>> string.octaldigits
'01234567'

string.punctuation :

Содержит все символы, которые считаются пунктуацией в локали C :

>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'

string.whitespace :

Содержит все символы ASCII, считанные пробелами:

>>> string.whitespace
' \t\n\r\x0b\x0c'

В режиме сценария print(string.whitespace) будет печатать фактические символы, используйте str для получения строки, возвращенной выше.


string.printable :

Содержит все символы, которые считаются пригодными для печати; комбинация string.digits , string.ascii_letters , string.punctuation и string.whitespace .

>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'

Обращение строки

Строка может быть отменена с помощью встроенной функции reverse reversed() , которая берет строку и возвращает итератор в обратном порядке.

>>> reversed('hello')
<reversed object at 0x0000000000000000>
>>> [char for char in reversed('hello')]
['o', 'l', 'l', 'e', 'h']

reversed() может быть завернута в вызов ''.join() чтобы сделать строку из итератора.

>>> ''.join(reversed('hello'))
'olleh'

Хотя использование reversed() может быть более читаемым для непосвященных пользователей Python, использование расширенного среза с шагом -1 выполняется быстрее и более кратким. Здесь попробуйте реализовать его как функцию:

>>> def reversed_string(main_string):
...     return main_string[::-1]
...
>>> reversed_string('hello')
'olleh'

Обозначить строки

Python предоставляет функции для оправдания строк, позволяя добавлять текст для упрощения выравнивания различных строк.

Ниже приведен пример str.ljust и str.rjust :

interstates_lengths = {
    5: (1381, 2222),
    19: (63, 102),
    40: (2555, 4112),
    93: (189,305),
}
for road, length in interstates_lengths.items():
    miles,kms = length
    print('{} -> {} mi. ({} km.)'.format(str(road).rjust(4), str(miles).ljust(4), str(kms).ljust(4)))
  40 -> 2555 mi. (4112 km.)
  19 -> 63   mi. (102  km.)
   5 -> 1381 mi. (2222 km.)
  93 -> 189  mi. (305  km.)

ljust и rjust очень похожи. Оба имеют параметр width и необязательный параметр fillchar . Любая строка, созданная этими функциями, по крайней мере до тех пор, пока параметр width который был передан в функцию. Если строка длиннее width , она не усекается. Аргумент fillchar , который по умолчанию имеет символ пробела ' ' должен быть одним символом, а не многострочной.

ljust функция подушечки конца строки она называется на с fillchar до тех пор, пока width длиной символов. Функция rjust устанавливает начало строки аналогичным образом. Следовательно, l и r в именах этих функций относятся к стороне, в которой исходная строка, а не fillchar , fillchar в выходную строку.

Преобразование между данными str или байтов и символами Unicode

Содержимое файлов и сетевых сообщений может представлять кодированные символы. Их часто нужно преобразовать в unicode для правильного отображения.

В Python 2 вам может потребоваться преобразовать данные str в символы Unicode. Значение по умолчанию ( '' , "" и т. Д.) Является строкой ASCII с любыми значениями вне диапазона ASCII, отображаемыми как экранированные значения. Строки Unicode - u'' (или u"" и т. Д.).

Python 2.x 2.3
# You get "© abc" encoded in UTF-8 from a file, network, or other data source

s = '\xc2\xa9 abc'  # s is a byte array, not a string of characters
                    # Doesn't know the original was UTF-8
                    # Default form of string literals in Python 2
s[0]                # '\xc2' - meaningless byte (without context such as an encoding)
type(s)             # str - even though it's not a useful one w/o having a known encoding

u = s.decode('utf-8')  # u'\xa9 abc'
                       # Now we have a Unicode string, which can be read as UTF-8 and printed properly
                       # In Python 2, Unicode string literals need a leading u
                       # str.decode converts a string which may contain escaped bytes to a Unicode string
u[0]                # u'\xa9' - Unicode Character 'COPYRIGHT SIGN' (U+00A9) '©'
type(u)             # unicode

u.encode('utf-8')   # '\xc2\xa9 abc'
                    # unicode.encode produces a string with escaped bytes for non-ASCII characters

В Python 3 вам может понадобиться преобразовать массивы байтов (называемые «байтовым литералом») в строки символов Unicode. По умолчанию используется строка Юникода, а литералы bytestring теперь должны быть введены как b'' , b"" и т. isinstance(some_val, byte) вернет True в isinstance(some_val, byte) , предполагая, что some_val будет строкой, которая может быть закодирована как байты.

Python 3.x 3.0
# You get from file or network "© abc" encoded in UTF-8

s = b'\xc2\xa9 abc' # s is a byte array, not characters
                    # In Python 3, the default string literal is Unicode; byte array literals need a leading b
s[0]                # b'\xc2' - meaningless byte (without context such as an encoding)
type(s)             # bytes - now that byte arrays are explicit, Python can show that.

u = s.decode('utf-8')  # '© abc' on a Unicode terminal
                       # bytes.decode converts a byte array to a string (which will, in Python 3, be Unicode)
u[0]                # '\u00a9' - Unicode Character 'COPYRIGHT SIGN' (U+00A9) '©'
type(u)             # str
                    # The default string literal in Python 3 is UTF-8 Unicode

u.encode('utf-8')   # b'\xc2\xa9 abc'
                    # str.encode produces a byte array, showing ASCII-range bytes as unescaped characters.

Содержит строку

Python чрезвычайно интуитивно проверяет, содержит ли строка заданную подстроку. Просто используйте оператор in :

>>> "foo" in "foo.baz.bar"
True

Примечание: тестирование пустой строки всегда приведет к True :

>>> "" in "test"
True


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow