Python中的Pascal funcs插入/删除
Delphi具有多种功能Python中的Pascal funcs插入/删除,python,Python,Delphi具有多种功能 插入(将子字符串Str2插入偏移量P处的字符串Str)和 删除(从偏移量P处的字符串Str中删除N个字符) 在Python中,字符串与它们的相似之处是什么?您可以使用 s1[:p]+s2+s1[p:][/code> s1[:p]+s1[p+n:][/code> 例如: >>> s1 = 'hello world' >>> s2 = 'xyz' >>> p = 3 >>> s1[:p] + s
(将子字符串Str2插入偏移量P处的字符串Str)和插入
(从偏移量P处的字符串Str中删除N个字符)李>删除
s1[:p]+s2+s1[p:][/code>
s1[:p]+s1[p+n:][/code>
>>> s1 = 'hello world'
>>> s2 = 'xyz'
>>> p = 3
>>> s1[:p] + s2 + s1[p:]
'helxyzlo world'
>>> n = 2
>>> s1[:p] + s1[p+n:]
'hel world'
你可以用
s1[:p]+s2+s1[p:][/code>
s1[:p]+s1[p+n:][/code>
>>> s1 = 'hello world'
>>> s2 = 'xyz'
>>> p = 3
>>> s1[:p] + s2 + s1[p:]
'helxyzlo world'
>>> n = 2
>>> s1[:p] + s1[p+n:]
'hel world'
Python字符串是不可变的,因此您不能修改现有字符串——但您可以将这些操作应用于字符串并生成新字符串 可能最好的方法是切片,这是索引语法的扩展,允许您提取多个字符。因此:
>>> 'abcde'[1:4]
'bcd'
请注意,第一个索引是包含的,但第二个索引是独占的。一开始这很奇怪,但在Python中这是一个普遍存在的约定
如果省略第一个或最后一个索引,则切片将分别转到字符串的开头或结尾:
>>> 'abcde'[1:]
'bcde'
>>> 'abcde'[:4]
'abcd'
最后,您可以使用+
运算符进行字符串连接:
>>> 'abc' + 'de'
'abcde'
将所有这些部分结合在一起,可以根据需要插入和删除子字符串:
>>> s = 'abcde'
>>> s[:2] + 'XYZ' + s[2:] # Insert 'XYZ' before index 2
'abXYZcde'
>>> s[:2] + s[4:] # Delete indices from 2 to before 4
'abe'
如果您想使用前面描述的insert
和delete
函数,您可以自己编写它们,但这并不难。扰流板警报--在阅读下面的代码之前,您可能想自己试一试。:)
(您可能会想出更好的参数名称——特别是,使用
str
是不可取的,因为它也是Python内置的名称——但在本例中,我故意使用了与您在问题中使用的相同的名称。)Python字符串是不可变的,因此,您不能修改现有字符串,但可以将这些操作应用于字符串并生成新字符串
可能最好的方法是切片,这是索引语法的扩展,允许您提取多个字符。因此:
>>> 'abcde'[1:4]
'bcd'
请注意,第一个索引是包含的,但第二个索引是独占的。一开始这很奇怪,但在Python中这是一个普遍存在的约定
如果省略第一个或最后一个索引,则切片将分别转到字符串的开头或结尾:
>>> 'abcde'[1:]
'bcde'
>>> 'abcde'[:4]
'abcd'
最后,您可以使用+
运算符进行字符串连接:
>>> 'abc' + 'de'
'abcde'
将所有这些部分结合在一起,可以根据需要插入和删除子字符串:
>>> s = 'abcde'
>>> s[:2] + 'XYZ' + s[2:] # Insert 'XYZ' before index 2
'abXYZcde'
>>> s[:2] + s[4:] # Delete indices from 2 to before 4
'abe'
如果您想使用前面描述的insert
和delete
函数,您可以自己编写它们,但这并不难。扰流板警报--在阅读下面的代码之前,您可能想自己试一试。:)
(您可能会想出更好的参数名称——特别是,使用str
是不可取的,因为它也是Python内置的名称——但在本例中,我特意使用了与您在问题中使用的相同的名称。)