Python 字符串到数组——如何将文本转换为列表

有时你需要将一种数据类型转换为另一种数据类型。

不要害怕,因为 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 中将字符串转换为列表的方法。