有没有办法在Python中对字符串进行子串,以获取从第3个字符到字符串末尾的新字符串?
也许喜欢myString[2:end]
?
如果离开第二部分意味着'直到结束',如果你离开第一部分,它是从一开始就开始的吗?
Pao*_*ino 2987
>>> x = "Hello World!"
>>> x[2:]
'llo World!'
>>> x[:2]
'He'
>>> x[:-2]
'Hello Worl'
>>> x[-2:]
'd!'
>>> x[2:-2]
'llo Worl'
Run Code Online (Sandbox Code Playgroud)
Python将这个概念称为"切片",它不仅仅是字符串.看看这里的全面介绍.
End*_*age 370
只是为了完整性,没有人提到它.数组切片的第三个参数是一个步骤.因此,反转字符串非常简单:
some_string[::-1]
Run Code Online (Sandbox Code Playgroud)
或者选择替代字符将是:
"H-e-l-l-o- -W-o-r-l-d"[::2] # outputs "Hello World"
Run Code Online (Sandbox Code Playgroud)
通过字符串前进和后退的能力可以保持与开始或结束的数组切片的一致性.
Mic*_*eon 114
Substr()通常(即PHP和Perl)以这种方式工作:
s = Substr(s, beginning, LENGTH)
Run Code Online (Sandbox Code Playgroud)
所以参数是beginning
和LENGTH
.
但是Python的行为是不同的; 它期望开始和END之后的一个(!).初学者很难发现这一点.所以正确替换Substr(s,开头,LENGTH)是
s = s[ beginning : beginning + LENGTH]
Run Code Online (Sandbox Code Playgroud)
gim*_*mel 23
这里似乎缺少一个例子:完整(浅)副本.
>>> x = "Hello World!"
>>> x
'Hello World!'
>>> x[:]
'Hello World!'
>>> x==x[:]
True
>>>
Run Code Online (Sandbox Code Playgroud)
这是创建序列类型副本(不是实习字符串)的常用习惯用法[:]
.浅复制一个列表,看看没有明显原因使用的Python列表切片语法.
Aar*_*all 18
有没有办法在Python中对字符串进行子串,以获取从第3个字符到字符串末尾的新字符串?
也许喜欢
myString[2:end]
?
是的,如果您将名称分配或绑定end
到常量单例,这实际上是有效的None
:
>>> end = None
>>> myString = '1234567890'
>>> myString[2:end]
'34567890'
Run Code Online (Sandbox Code Playgroud)
切片表示法有3个重要参数:
没有给出它们的默认值是None
- 但我们可以明确地传递它们:
>>> stop = step = None
>>> start = 2
>>> myString[start:stop:step]
'34567890'
Run Code Online (Sandbox Code Playgroud)
如果离开第二部分意味着'直到结束',如果你离开第一部分,它是从一开始就开始的吗?
是的,例如:
>>> start = None
>>> stop = 2
>>> myString[start:stop:step]
'12'
Run Code Online (Sandbox Code Playgroud)
请注意,我们在切片中包含start,但我们只会停止,而不是包括停止.
当step为时None
,默认情况下切片1
用于该步骤.如果你使用负整数,Python就足够聪明,从最后到开头.
>>> myString[::-1]
'0987654321'
Run Code Online (Sandbox Code Playgroud)
Bab*_*pha 11
text = "StackOverflow"
#using python slicing, you can get different subsets of the above string
#reverse of the string
text[::-1] # 'wolfrevOkcatS'
#fist five characters
text[:5] # Stack'
#last five characters
text[-5:] # 'rflow'
#3rd character to the fifth character
text[2:5] # 'ack'
#characters at even positions
text[1::2] # 'tcOefo'
Run Code Online (Sandbox Code Playgroud)
小智 10
str1='There you are'
>>> str1[:]
'There you are'
>>> str1[1:]
'here you are'
#To print alternate characters skipping one element in between
>>> str1[::2]
'Teeyuae'
#To print last element of last two elements
>>> str1[:-2:-1]
'e'
#Similarly
>>> str1[:-2:-1]
'e'
#Using slice datatype
>>> str1='There you are'
>>> s1=slice(2,6)
>>> str1[s1]
'ere '
Run Code Online (Sandbox Code Playgroud)
除了"结束"之外,你已经做到了.它被称为切片表示法.你的例子应该是:
new_sub_string = myString[2:]
Run Code Online (Sandbox Code Playgroud)
如果省略第二个参数,则隐含地表示字符串的结尾.
如果包含的myString开始于偏移6和长度为9帐号,然后就可以提取账户号码是这样的:acct = myString[6:][:9]
。
如果 OP 接受这一点,他们可能想以实验方式尝试,
myString[2:][:999999]
Run Code Online (Sandbox Code Playgroud)
它有效 - 不会引发错误,也不会发生默认的“字符串填充”。
好吧,我遇到了需要将 PHP 脚本转换为 Python 的情况,并且它有很多substr(string, beginning, LENGTH)
.
如果我选择Python的,string[beginning:end]
我必须计算很多结束索引,所以更简单的方法是使用string[beginning:][:length]
,它为我节省了很多麻烦。
我想在讨论中加两点:
您可以None
在空白空间中使用以指定"从开头"或"到结尾":
'abcde'[2:None] == 'abcde'[2:] == 'cde'
Run Code Online (Sandbox Code Playgroud)
这在函数中特别有用,在这些函数中,您不能提供空格作为参数:
def substring(s, start, end):
"""Remove `start` characters from the beginning and `end`
characters from the end of string `s`.
Examples
--------
>>> substring('abcde', 0, 3)
'abc'
>>> substring('abcde', 1, None)
'bcde'
"""
return s[start:end]
Run Code Online (Sandbox Code Playgroud)Python有切片对象:
idx = slice(2, None)
'abcde'[idx] == 'abcde'[2:] == 'cde'
Run Code Online (Sandbox Code Playgroud)小智 5
也许我错过了,但我无法在此页面上找到原始问题的完整答案,因为此处未进一步讨论变量。所以我不得不继续寻找。
由于我还不能发表评论,让我在这里添加我的结论。我确信在访问此页面时我不是唯一对它感兴趣的人:
>>>myString = 'Hello World'
>>>end = 5
>>>myString[2:end]
'llo'
Run Code Online (Sandbox Code Playgroud)
如果你离开第一部分,你会得到
>>>myString[:end]
'Hello'
Run Code Online (Sandbox Code Playgroud)
如果你把 : 也留在中间,你会得到最简单的子字符串,这将是第 5 个字符(从 0 开始计数,所以在这种情况下它是空白):
>>>myString[end]
' '
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2725002 次 |
最近记录: |