Python 字符串方法概览

作者:Ruben Geert van den Berg,源自 SPSS Python 基础

字符串操作是任何编程语言的重要组成部分。在 Python 中,这些操作被称为字符串方法(string methods)。下表提供了一个快速概览。

Python 字符串方法概览

功能 Python 返回值 Python 示例 SPSS 示例
提取子字符串(Extract Substring) [] 字符串(String) myString[0] compute str01 = char.substr(str01,1,1).
连接字符串(Concatenate 2(+) Strings) ++= 字符串(String) myString + myString compute str01 = concat(str01,str02).
查找子字符串最左侧出现的位置(Find Leftmost Occurrence of Substring) find 整数(Integer) myString.find('a') compute pos = char.index(str01,'a').
查找子字符串最右侧出现的位置(Find Rightmost Occurrence of Substring) rfind 整数(Integer) myString.rfind('a') compute pos = char.rindex(str01,'a').
替换字符(Replace 1(+) Characters) replace 字符串(String) myString.replace('a','b') compute str01 = replace(str01,'a','b').
获取字符串长度(Find Length of String) len 整数(Integer) len(myString) compute len01 = char.length(str01).
转换为小写(Lowercase String) lower 字符串(String) myString.lower() compute str01 = lower(str01).
转换为大写(Uppercase String) upper 字符串(String) myString.upper() compute str01 = upper(str01).
首字母大写(Capitalize String) capitalize 字符串(String) myString.capitalize() (无)
移除左侧字符(Remove Characters from Left Part of String) lstrip() 字符串(String) myString.lstrip() compute str01 = ltrim(str01).
移除右侧字符(Remove Characters from Right Part of String) rstrip() 字符串(String) myString.rstrip() compute str01 = rtrim(str01).
移除两侧字符(Remove Characters from Left and Right Part of String) strip() 字符串(String) myString.strip() (无)
字符串转换为整数(Convert String to Integer) int 整数(Integer) int(myString) compute num01 = number(str01,comma16). (或使用 ALTER TYPE.)
分割字符串为列表(Split String into Python List) split 列表(List) myString.split(' ') (无)
检查字符串是否以…开始(Check if String Starts With…) startswith 布尔值(Boolean) myString.startswith("var") (无)
检查字符串是否以…结束(Check if String Ends With…) endswith 布尔值(Boolean) myString.endswith("var") (无)
左侧填充零(Left Pad String with Zeroes) zfill 字符串(String) myString.zfill(3) compute str01 = char.lpad(str01,3).

Python 中提取子字符串

在 Python 中,我们使用方括号 [] 提取子字符串,方括号内可以包含一个或两个索引以及冒号。例如:

  • myString[0] 提取第一个字符;
  • myString[1:] 提取第二个到最后一个字符;
  • myString[:4] 提取第一个到第四个字符;
  • myString[1:3] 提取第二个到第三个字符;
  • myString[-1] 提取最后一个字符。

Python 子字符串示例

***SPSS PYTHON SUBSTRING EXAMPLES.
**
begin program python3.
myString = 'abcdefghij'
print(myString[0]) # a
print(myString[1:]) # bcdefghij
print(myString[:4]) # abcd
print(myString[1:3]) # bc
print(myString[-1]) # j
end program.

在 Python 中连接字符串

基本上,+ 连接两个或多个字符串。此外,myString += 'a'myString = myString + 'a' 的简写形式,我们经常使用它来构建 SPSS 语法

Python 连接示例

***1. CONCATENATE WITH "+".
**
begin program python3.
myString = 'abc'
print(myString + 'def') #abcdef
end program.

***2. CONCATENATE WITH "+="
**
begin program python3.
myString = 'abc'
for i in range(5):
    myString += str(i)
print(myString) #abc01234
end program.

注意:在这些示例中,我们实际上创建了新的字符串对象,而不是真正更改现有的字符串对象。这是因为字符串在 Python 中是 不可变的

查找子字符串最左侧出现的位置

在 Python 中,使用 find 检索单个或多个字符子字符串的位置。请记住以下几点:

  • Python 完全区分大小写;
  • Python 对象的索引从零开始。

因此,我们示例中字符的索引如下所示。

Python 字符索引

Python Find 示例

***FIND LEFTMOST OCCURRENCE OF SUBSTRING.
**
begin program python3.
myString = 'Cycling in the mountains is fun.'
print(myString.find('c')) # 2
print(myString.find('in')) # 4
end program.

查找子字符串最右侧出现的位置

在 Python 中,rfind 返回字符串中某个子字符串最右侧出现位置的索引(同样从零开始)。下面的语法展示了几个示例。

***FIND RIGHTMOST OCCURRENCE OF SUBSTRING.
**
begin program python3.
myString = 'Cycling in the mountains is fun.'
print(myString.rfind('i')) # 25
print(myString.rfind('in')) # 21
end program.

在 Python 字符串中替换字符

在 Python 中,使用 replace 替换字符串中的字符,如下所示。

***Replace one or more characters in string.
**
begin program python3.
myString = 'The cat caught the mouse in the living room.'
print(myString.replace('a','')) #The ct cught the mouse in the living room.
print(myString.replace('the','a')) # The cat caught a mouse in a living room.
end program.

注意:在第 5 行,我们将所有 ‘a’ 替换为空字符串。也就是说,我们将从示例句子中删除所有 ‘a’。

获取 Python 字符串的长度

在 Python 中,len 返回某个字符串对象的字符数(不是字节数)。

***FIND LENGTH OF STRING.
**
begin program python3.
myString = 'abcde'
print(len(myString)) # 5
end program.

将 Python 字符串转换为小写

要将 Python 字符串转换为小写,请使用 lower,如下所示。

***LOWERCASE STRING.
**
begin program python3.
myString = 'SPSS Is Fun!'
print(myString.lower()) # spss is fun!
end program.

将 Python 字符串转换为大写

在 Python 中,upper 将字符串对象转换为大写。

***UPPERCASE STRING.
**
begin program python3.
myString = 'This is Some Title'
print(myString.upper()) # THIS IS SOME TITLE
end program.

Python 字符串对象首字母大写

在 Python 中,“首字母大写(capitalizing)”意味着返回一个字符串,其中第一个字符为大写,所有其他字符为小写——即使它们在原始字符串中是大写的。

***CAPITALIZE STRING.
**
begin program python3.
myString = 'aBcDeF'
print(myString.capitalize()) # Abcdef
end program.

移除字符串左侧的字符

在 Python 中,仅使用 lstrip() 即可移除字符串开头的空格和制表符。可以通过在括号内指定任何其他前导字符来移除它(下面的第 12 行)。

***REMOVE WHITESPACE FROM START OF STRING.
**
begin program python3.
myString = '  left padding removed'
print(myString.lstrip()) # left padding removed
end program.

***REMOVE ASTERISKS (*) FROM START OF STRING.
**
begin program python3.
myString = '****left padding removed'
print(myString.lstrip('*')) # left padding removed
end program.

移除字符串右侧的字符

rstrip 方法与 lstrip 的工作方式相同,但移除字符串右侧的字符。

***REMOVE WHITESPACE FROM END OF STRING.
**
begin program python3.
myString = 'right padding removed  '
print(myString.rstrip()) # right padding removed
end program.

***REMOVE ASTERISKS (*) FROM END OF STRING.
**
begin program python3.
myString = 'right padding removed****'
print(myString.rstrip('*')) # right padding removed
end program.

移除字符串左侧和右侧的字符

strip 基本上结合了 Python 的 lstriprstrip 方法。

***REMOVE WHITESPACE FROM END OF STRING.
**
begin program python3.
myString = '  left and right padding removed  '
print(myString.strip()) # left and right padding removed
end program.

***REMOVE ASTERISKS (*) FROM END OF STRING.
**
begin program python3.
myString = '****left and right padding removed****'
print(myString.strip('*')) # left and right padding removed
end program.

遗憾的是,此方法没有 SPSS 等效项,这就是为什么我们有时在旧语法中看到 LSTRIP(RSTRIP(MYSTRING)) 的原因。请注意,在 SPSS Unicode 模式下,通常会自动从字符串值中删除空格。

将字符串转换为整数

在 Python 中,int 将字符串转换为整数。如果字符串包含除数字之外的任何内容,它将崩溃并显示错误。

***CONVERT STRING TO INTEGER.
**
begin program.
myString = '123'
myInt = int(myString)
print(type(myInt)) # <type 'int'>
print(myInt) # 123
end program.

将 Python 字符串分割为列表对象

下面的示例将字符串分割为 Python 列表(list)对象。split 始终需要分隔符(separator)。可以使用列表推导式(list comprehension)分割不带任何分隔符的字符串(下面的第 14 行)。

***SPLIT STRING INTO PYTHON LIST OBJECT.
**
begin program python3.
myString = 'A A C A B C'
myList = myString.split(' ')
print(type(myList)) # <type 'list'>
print(myList) # ['A', 'A', 'C', 'A', 'B', 'C']
end program.

***SPLIT STRING INTO PYTHON LIST WITHOUT SEPARATOR.
**
begin program python3.
myString = 'AACABC'
myList = [i for i in myString]
print(myList) # ['A', 'A', 'C', 'A', 'B', 'C']
end program.

检查字符串是否以…开始

***EVALUATE IF STRING STARTS WITH GIVEN SUBSTRING.
**
begin program python3.
myString = 'abcdef'
print(myString.startswith('abc')) # True
print(myString.startswith('bcd')) # False
end program.

***TYPICAL USE OF STARTSWITH().
**
begin program python3.
if myString.startswith('a'):
    print("First character is 'a'.")
else:
    print("First character is not 'a'.")
end program.

注意:True(真) 和 False(假) 是 布尔值 的 2 个可能值。 当我们只想运行一个 Python if 语句时,我们经常使用它们。

检查字符串是否以…结束

***EVALUATE IF STRING ENDS WITH GIVEN SUBSTRING.
**
begin program python3.
myString = 'abcdef'
print(myString.endswith('f')) # True
print(myString.endswith('e')) # False
end program.

左侧填充零

在 Python 中,zfill(3) 在字符串的左侧填充零,直到总长度为 3 个字符。 我们这样做主要是为了按字母顺序对数字进行排序:002 排在 010 之前,依此类推。

***LEFT PAD STRING WITH ZEROES.
**
begin program python3.
myString = '1'
print(myString.zfill(3)) # 001
myString = '10'
print(myString.zfill(3)) # 010
end program.

以上就是 Python 字符串方法的大致内容。 希望本教程对您有所帮助。