我想从第三个字符到字符串末尾获得一个新字符串,例如myString[2:end]。如果省略第二部分意味着“到结尾”,如果省略第一部分,它是否从头开始?
当前回答
Subs()通常(即PHP和Perl)是这样工作的:
s = Substr(s, beginning, LENGTH)
所以参数是开始和长度。
但Python的行为不同;它需要开头和END(!)之后的一个。初学者很难发现这一点。因此,Substr(s,begin,LENGTH)的正确替换为
s = s[ beginning : beginning + LENGTH]
其他回答
有没有一种方法可以在Python中对字符串进行子串,以获得从第三个字符到字符串末尾的新字符串?也许像myString[2:end]?
是的,如果您将名称end赋值或绑定到常量singleton None,这实际上是有效的:
>>> end = None
>>> myString = '1234567890'
>>> myString[2:end]
'34567890'
切片表示法有3个重要参数:
开始停止步
未给定时,它们的默认值为None,但我们可以显式传递它们:
>>> stop = step = None
>>> start = 2
>>> myString[start:stop:step]
'34567890'
如果离开第二部分意味着“直到结束”,如果你离开第一部分,它是否从头开始?
是的,例如:
>>> start = None
>>> stop = 2
>>> myString[start:stop:step]
'12'
请注意,我们在切片中包括start,但我们只包括stop,而不包括stop。
当步长为“无”时,默认情况下,切片使用1作为步长。如果您使用负整数,Python就足够聪明,可以从头到尾。
>>> myString[::-1]
'0987654321'
我在解释切片表示法问题的答案中详细解释了切片表示法。
为了完整性,其他人没有提到过。数组切片的第三个参数是一个步骤。因此,反转字符串非常简单:
some_string[::-1]
或者选择其他字符:
"H-e-l-l-o- -W-o-r-l-d"[::2] # outputs "Hello World"
在字符串中前后移动的能力与从开始或结束排列切片的能力保持一致。
这里似乎缺少一个示例:完整(浅)拷贝。
>>> x = "Hello World!"
>>> x
'Hello World!'
>>> x[:]
'Hello World!'
>>> x==x[:]
True
>>>
这是创建序列类型副本(而不是内部字符串)[:]的常见习惯用法。Shallow复制一个列表,请参阅Python列表切片语法,无明显原因。
Subs()通常(即PHP和Perl)是这样工作的:
s = Substr(s, beginning, LENGTH)
所以参数是开始和长度。
但Python的行为不同;它需要开头和END(!)之后的一个。初学者很难发现这一点。因此,Substr(s,begin,LENGTH)的正确替换为
s = s[ beginning : beginning + LENGTH]
实现这一点的常见方法是通过字符串切片。
MyString[a:b]提供了从索引a到(b-1)的子字符串。
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- Printf与std::字符串?
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if