原文:Python String to Array – How to Convert Text to a List,作者:Dionysia Lemonaki
有时你需要将一种数据类型转换为另一种数据类型。
不要害怕,因为 Python 提供了多种不同的方法来帮助你做到这一点。
在本文中,你将看到一些将字符串转换为列表的方法。
以下是我们将介绍的内容:
- 字符串和列表概述
- 如何检查对象的数据类型
- 将字符串转换为单个字符的列表
- 将字符串转换为单词列表
split()
方法语法分解- 使用带有分隔符的
split()
- 使用带有
maxsplit
参数的split()
- 将一串数字转换为数字列表
Python 中的字符串和列表是什么
字符串是有序的字符序列。它是一系列字符,一个字符跟随另一个字符。
字符串用单引号或双引号括起来:
# 以下都是字符串
# 用单引号括起来的字符串
first_name = 'John'
# 用双引号括起来的字符串
last_name = "Doe"
如果要创建一个跨多行的字符串,或者所谓的多行字符串,请使用三引号来开始和结束它:
# 用三引号括起来的多行字符串
phrase = '''I am learning Python
and I really enjoy learning the language!
'''
字符串是不可变的。这意味着一旦它们被创建,就不能改变。组成字符串的单个字符不能更改。
例如,如果你尝试将单词的首字母从小写更改为大写,你的代码中会出现错误:
# 尝试将小写 “p” 更改为大写 “P”
fave_language = "python"
fave_language[0] = "P"
print(fave_language)
# 输出将是一条错误消息
#fave_language[0] = "P"
#TypeError: 'str' object does not support item assignment
但是,你可以通过更新变量来重新分配不同的字符串,如下所示:
fave_language = "python"
fave_language = "Python"
print(fave_language)
# 输出
#Python
列表是有序的数据集合。
多个(通常相关的)项目一起存储在同一个变量下。
你可以通过将零个或多个项目括在方括号 []
中来创建列表,每个项目用逗号分隔。
列表可以包含 Python 的任何内置数据类型。
# 一个数字的列表
my_numbers_list = [10,20,30,40,50]
print(my_numbers_list)
# 输出
# [10, 20, 30, 40, 50]
列表是可变的。
你可以在创建列表后更改列表项。这意味着你可以在程序的生命周期内随时修改现有项目、添加新项目或删除项目。
programming_languages = ["Javascript", "Python", "Java"]
# 更新列表中的第一项
programming_languages[0] = "JavaScript"
print(programming_languages)
# 输出
#['JavaScript', 'Python', 'Java']
如何在 Python 中确定对象的数据类型
要在 Python 中查找对象的数据类型,请使用内置的 type()
函数,该函数具有以下语法:
type(object)
# 其中 object 是你需要查找数据类型的对象
type()
函数将返回作为参数传递给函数的对象的类型。
这通常用于调试目的。
让我们看看如何在下面的示例中将 type()
与字符串和列表一起使用:
my_name = "John Doe"
my_lucky_numbers = [7,14,33]
print(type(my_name))
print(type(my_lucky_numbers))
# 输出
#<class 'str'>
#<class 'list'>
如何将字符串转换为单个字符的列表
你可以把一个词变成一个列表。
组成该单词的每个字符都将成为列表中的一个单独的元素。
例如,让我们以文本 “Python” 为例。
你可以将其转换为字符列表,其中每个列表项都是构成字符串 “Python” 的每个字符。
这意味着 P
字符将是一个列表项,y
字符将是另一个列表项,t
字符将是另一个,依此类推。
最直接的方法是将字符串类型转换为列表。
Tyepcasting 意味着直接从一种数据类型转换为另一种数据类型——在本文的例子中,是从字符串数据类型转换为列表数据类型。
为此,你可以使用内置的 list()
函数并将给定的字符串作为参数传递给函数。
programming_language = "Python"
programming_language_list = list(programming_language)
print(programming_language_list)
# 输出
#['P', 'y', 't', 'h', 'o', 'n']
让我们看另一个例子:
current_routine = " Learning Python ! "
current_routine_list = list(current_routine)
print(current_routine_list)
# 输出
#[' ', 'L', 'e', 'a', 'r', 'n', 'i', 'n', 'g', ' ', 'P', 'y', 't', 'h', 'o', 'n', ' ', '!', ' ']
文本 " Learning Python ! "
有前导和尾随空格,单词 “Learning” 和 “Python” 之间的空格,以及单词 “Python” 和感叹号之间的空格。
当字符串转换为字符列表时,每个空格都被视为一个单独的字符,这就是你将空格 ' '
视为列表项的原因。
要仅从字符串的开头和结尾删除空格,请使用 strip()
方法。
current_routine = " Learning Python ! "
# 前导和尾随空格将不再是列表中的单独元素
current_routine_list = list(current_routine.strip())
print(current_routine_list)
# 输出
#['L', 'e', 'a', 'r', 'n', 'i', 'n', 'g', ' ', 'P', 'y', 't', 'h', 'o', 'n', ' ', '!']
要删除所有而不仅仅是前导和尾随空格,并使新列表中不包含空格字符,请改用 replace()
方法:
current_routine = " Learning Python ! "
# 替换没有空格的每个空白实例
current_routine_list = list(current_routine.replace(" ", ""))
print(current_routine_list)
# 输出
#['L', 'e', 'a', 'r', 'n', 'i', 'n', 'g', 'P', 'y', 't', 'h', 'o', 'n', '!']
如何将字符串转换为单词列表
将字符串转换为列表的另一种方法是使用 split()
Python 方法。
split()
方法将一个字符串拆分为一个列表,其中每个列表项是组成该字符串的每个单词。
每个单词将是一个单独的列表项。
Python 中 split() 方法的语法分解
split()
方法的一般语法如下:
string.split(separator=None, maxsplit=-1)
让我们分解一下:
string
是你要转换为列表的给定字符串。split()
方法将字符串转换为列表,它有两个可选参数。separator
是第一个可选参数,它决定了字符串的分割位置。默认情况下,分隔符是空格,字符串将在任何有空格的地方分割。maxsplit
是第二个可选参数,它指定要进行的最大拆分次数。默认值-1
表示它拆分整个字符串,并且拆分没有限制。
让我们看一个例子来说明它是如何工作的。
phrase = "I am learning Python !"
print(type(phrase))
# 输出
#<class 'str'>
在上面的字符串中,组成字符串的每个单词都用空格分隔。
要将字符串转换为单词列表,请使用 split()
方法。
你不需要指定分隔符或 maxsplit
参数,因为我们希望在它们之间有空格的地方分隔所有单词。
phrase = "I am learning Python !"
phrase_to_list = phrase.split()
print(phrase_to_list)
print(type(phrase_to_list))
# 输出
#['I', 'am', 'learning', 'Python', '!']
#<class 'list'>
字符串根据任何空格的位置进行拆分,组成字符串的每个单词都变成了一个单独的列表项。
如何使用带有分隔符的 split() 方法
你还可以使用带有分隔符的 split()
方法将字符串转换为列表。分隔符可以是你指定的任何字符。
该字符串将根据您提供的分隔符进行分隔。
例如,你可以使用逗号 ,
作为分隔符。
只要有逗号,字符串就会变成一个列表,从左边开始。
逗号分隔的项目将是单独的列表项目。
让我们采用以下字符串:
phrase = "Hello world,I am learning Python!"
有一个逗号将 Hello world
与 I am learning Python!
分开。
如果我们想使用该逗号作为分隔符来创建两个单独的列表项,我们将执行以下操作:
phrase = "Hello world,I am learning Python!"
phrase_to_list = phrase.split(",")
print(phrase_to_list)
# 输出
#['Hello world', 'I am learning Python!']
创建了两个单独的项目作为列表项目,并且在有逗号的地方发生了分隔。
另一个例子可以是分隔一个域名,只要有一个点 .
。
domain_name = "www.freecodecamp.org"
domain_name_list = domain_name.split(".")
print(domain_name_list)
# 输出
#['www', 'freecodecamp', 'org']
每有一个点,就会在列表中添加一个新的列表项。
如何将 split()
方法与 maxsplit
参数一起使用
如前所述,maxsplit
是 split()
方法的可选参数。
它定义了列表中有多少元素将被拆分并变成单独的列表项。默认情况下,它设置为 -1
,这意味着组成字符串的所有元素都将被拆分。
但是我们可以将值更改为特定的数字。
为了只拆分两个单词而不是每个单词,我们将 maxsplit
设置为 2:
current_routine = "I enjoy learning Python everyday"
current_routine_list = current_routine.split(maxsplit=2)
print(current_routine_list)
# 输出
#['I', 'enjoy', 'learning Python everyday']
maxsplit
被设置为 2
,这意味着最多只有两个单词将被空格分割,并将生成两个单独的列表项。第三个列表项将是构成初始字符串的其余单词。
使用上一节中的另一个示例,你可以将分隔符与 maxsplit
结合使用,以将字符串有针对性地转换为列表:
domain_name = "www.freecodecamp.org"
domain_name_list = domain_name.split(".", maxsplit=1)
print(domain_name_list)
# 输出
#['www', 'freecodecamp.org']
在这个例子中,分隔符是一个点,只有第一个元素被分割。
如何将整数字符串转换为整数列表
用单引号或双引号括起来的数字被视为字符串。
假设你将出生日期存储为字符串,如下所示:
birthdate = "19/10/1993"
print(type(birthdate))
# 输出
#<class 'str'>
要删除斜线,并将与出生日期、月份和年份相关的数字存储为单独的列表项,你可以执行以下操作:
birthdate = "19/10/1993"
birthdate_list = birthdate.split("/")
print(birthdate_list)
print(type(birthdate_list))
# 输出
#['19', '10', '1993']
#<class 'list'>
在示例中,分隔符是斜杠 /
,只要有斜杠,就会创建一个新的列表项。
如果你仔细查看输出,你会发现列表项仍然是字符串,因为它们被单引号包围并且没有进行类型转换。
要将每个列表项从字符串转换为整数,请使用 map
函数。
map
函数有两个参数:
- 一个函数,在这个示例中,该函数将是
int
函数。 - 一个可迭代对象,它是项目的序列或集合,在这个示例中,可迭代的是我们创建的列表。
birthdate = "19/10/1993"
birthdate_list = birthdate.split("/")
str_to_int = (map(int, birthdate_list))
print(str_to_int)
# 输出
#<map object at 0x10e289960>
这并不是我们想要的输出。检查数据类型时,我们看到不再有一个列表:
print(type(str_to_int))
# 输出
#<class 'map'>
为了纠正这个问题,我们需要返回并在转换之前添加 list()
函数:
birthdate = "19/10/1993"
birthdate_list = birthdate.split("/")
str_to_int = list(map(int, birthdate_list))
print(type(str_to_int))
print(str_to_int)
# 输出
#<class 'list'>
#[19, 10, 1993]
总结
你现在知道了一些在 Python 中将字符串转换为列表的方法。
要了解有关 Python 编程语言的更多信息,请查看 freeCodeCamp 的 Python 和科学计算认证课程。
你将从基础开始,通过对初学者友好的交互式课程来学习。最后,你还将构建五个项目以巩固你所学的知识。
感谢你阅读本文,祝你编程愉快!