Есть ли функция Python, подобная Lua string.sub? - PullRequest
4 голосов
/ 06 октября 2011

В соответствии с названием, я ищу функцию Python, похожую на Lua string.sub, будь то третья сторона или часть стандартной библиотеки Python.Я искал по всему интернету (в том числе stackoverflow) почти час и не смог ничего найти.

Ответы [ 3 ]

12 голосов
/ 06 октября 2011

Lua:

> = string.sub("Hello Lua user", 7)      -- from character 7 until the end
Lua user
> = string.sub("Hello Lua user", 7, 9)   -- from character 7 until and including 9
Lua
> = string.sub("Hello Lua user", -8)     -- 8 from the end until the end
Lua user
> = string.sub("Hello Lua user", -8, 9)  -- 8 from the end until 9 from the start
Lua
> = string.sub("Hello Lua user", -8, -6) -- 8 from the end until 6 from the end
Lua

Python:

>>> "Hello Lua user"[6:]
'Lua user'
>>> "Hello Lua user"[6:9]
'Lua'
>>> "Hello Lua user"[-8:]
'Lua user'
>>> "Hello Lua user"[-8:9]
'Lua'
>>> "Hello Lua user"[-8:-5]
'Lua'

Python, в отличие от Lua, является нулевым индексом, следовательно, подсчет символовэто отличается.Массивы начинаются с 1 в Lua , 0 в Python.

При нарезке в Python первое значение является включающим, а второе - эксклюзивным (до, но не включая).Пустое первое значение равно нулю, пустое второе значение равно размеру строки.

10 голосов
/ 06 октября 2011

Python не требует такой функции. Его синтаксис поддерживает функцию String.sub (и многое другое) напрямую:

>>> 'hello'[:2]
'he'
>>> 'hello'[-2:]
'lo'
>>> 'abcdefghijklmnop'[::2]
'acegikmo'
>>> 'abcdefghijklmnop'[1::2]
'bdfhjlnp'
>>> 'Reverse this!'[::-1]
'!siht esreveR'
4 голосов
/ 06 октября 2011

Да, python предлагает (на мой взгляд, очень хороший) вариант подстроки: "string"[2:4] возвращает ri.

Обратите внимание, что эта «нарезка» поддерживает множество опций:

"string"[2:] # "ring"
"string"[:4] # "stri"
"string"[:-1] # "strin" (everything but the last character)
"string"[:] # "string" (captures all)
"string"[0:6:2] # "srn" (take only every second character)
"string"[::-1] # "gnirts" (all with step -1 => backwards)

Вы найдете некоторую информацию об этом здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...