如何在Python中用split() 方法将一个字符串分割成一个列表

538 阅读3分钟

数据可以有很多形状和形式--它经常以字符串的形式表示。

无论是从 CSV 文件还是输入文本,我们经常分割字符串以获得特征或元素的列表。

在本指南中,我们将看看如何在Python中用split() 方法将一个字符串分割成一个列表。

在Python中把字符串分割成列表

字符串类的split() 方法是相当直接的。它对字符串进行分割,给定一个分隔符,并返回一个由字符串分割出来的元素组成的列表。

默认情况下,定界符被设置为一个空格 - 所以如果你省略定界符参数,你的字符串将在每个空格上被分割。

让我们看一下split() 方法的行为。

string = "Age,University,Name,Grades"

lst = string.split(',')

print(lst)
print('Element types:', type(lst[0]))
print('Length:', len(lst))

我们的字符串有以逗号为界的元素,就像CSV(逗号分隔的值)文件一样,所以我们适当地设置了分隔符。

这导致了一个类型为str 的元素的列表,不管它们可以代表什么其他类型。

['Age', 'University', 'Name', 'Grades']
Element types: <class 'str'>
Length: 4

将字符串分割成列表,修剪空白处并改变大小写

并非所有的输入字符串都是干净的--所以你并不总是有一个格式完美的字符串可以分割。有时,字符串可能包含不应该出现在 "最终产品 "中的空白处,或者有大写和小写字母的不匹配。

值得庆幸的是,在你拆分后,处理这个列表和其中的每个元素是非常容易的。

# Contains whitespaces after commas, which will stay after splitting
string = "age, uNiVeRsItY, naMe, gRaDeS"
lst = string.split(',')

print(lst)

这样的结果是

['age', ' uNiVeRsItY', ' naMe', ' gRaDeS']

不妙!每个元素都以空格开始,而且这些元素根本就没有正确的大写。对一个列表中的每个元素应用一个函数可以很容易地通过一个简单的for 循环来完成,所以我们要应用一个strip()/trim() (去掉空白)和一个大写字母函数。

由于我们不仅要对第一个字母进行大写,而且还要保持其余字母的小写(以执行一致性),让我们为之定义一个辅助函数。

def capitalize_word(string):
    return string[:1].capitalize() + string[1:].lower()

该方法接收一个字符串,在它的第一个字母上切开,并将其大写。字符串的其余部分被转换为小写字母,然后将这两个改变了的字符串连接起来。

我们现在也可以在一个循环中使用这个方法。

string = "age, uNiVeRsItY, naMe, gRaDeS"

lst = string.split(',')
lst = [s.strip() for s in lst]
lst = [capitalize_word(s) for s in lst]

print(lst)
print('Element types:', type(lst[0]))
print('Length:', len(lst))

这样做的结果是干净的

['Age', 'University', 'Name', 'Grades']
Element types: <class 'str'>
Length: 4

将字符串分割成列表并转换为整数

如果你正在处理一个由字符串表示的整数列表,会发生什么?分割后,你将无法对其进行整数操作,因为它们表面上是字符串。

值得庆幸的是,我们可以使用与之前相同的for 循环来将这些元素转换为整数。

string = "1,2,3,4"

lst = string.split(',')
lst = [int(s) for s in lst]

print(lst)
print('Element types:', type(lst[0]))
print('Length:', len(lst))

这就是现在的结果

[1, 2, 3, 4]
Element types: <class 'int'>
Length: 4

用限制器将字符串分割成列表

除了分隔符,split() 方法还接受一个限制器--分割的次数。

它是一个整数,被定义在分隔符之后。

string = "Age, University, Name, Grades"

lst = string.split(',', 2)
print(lst)

这里,在第一个和第二个逗号上发生了两次分割,之后就没有分割了。

['Age', ' University', ' Name, Grades']

结论

在这个简短的指南中,你已经学会了如何在 Python 中把一个字符串分割成一个列表。

你还学会了如何在将字符串分割成一个列表的同时,修剪空白处和修正大小写,作为一个简单的处理步骤。