Python, split 分割逗号分隔的字符串,去除空格,并转换为一个列表

商业

在 Python 中把逗号分隔的字符串分割成一个列表时,如果中间没有空格,只用 split() 就可以了。如果有空格,则与 strip() 结合起来,去除多余的空格,是很有用的。此外,使用列表理解符号是一种聪明的写作方式。

在本节中,我们首先解释如下。

  • 用指定的分隔符分割一个字符串,并以列表形式返回split()
  • 删除字符串开头和结尾的多余字符。strip()
  • 列表理解符号,将函数和方法应用于列表元素。

它还展示了如何通过删除空格来制作一个由空格和逗号分隔的字符串列表,如下所示。
'one, two, three'

此外,我们将讨论以下内容

  • 如何将其作为一个数字列表来获取
  • 如何使用join()来连接一个列表并使其再次成为一个字符串

split(): 用指定的分隔符分割一个字符串,并以列表形式返回

使用字符串的split()方法,你可以用指定的分隔符分割一个字符串,并将其作为一个列表(数组)来获取。指定的定界符可以通过以下参数指定。sep

如果省略了参数sep,并且没有指定分隔符,它将通过空格分割字符串并返回一个列表。连续的空格和制表符也会分割列表,所以如果你想做一个以制表符分隔的字符串列表,你可以使用 split() 而不使用参数。

s = 'one two three'
l = s.split()
print(l)
# ['one', 'two', 'three']

s = 'one two        three'
l = s.split()
print(l)
# ['one', 'two', 'three']

s = 'one\ttwo\tthree'
l = s.split()
print(l)
# ['one', 'two', 'three']

如果在sep参数中指定了分隔符,它就用该字符串分割列表并返回一个列表。

s = 'one::two::three'
l = s.split('::')
print(l)
# ['one', 'two', 'three']

在逗号分隔的字符串的情况下,如果没有额外的空白,就没有问题,但如果你以逗号作为分隔符运行split()来分隔由逗号+空白分隔的字符串,你最终会得到一个开头留有空白的字符串的列表。

s = 'one,two,three'
l = s.split(',')
print(l)
# ['one', 'two', 'three']

s = 'one, two, three'
l = s.split(',')
print(l)
# ['one', ' two', ' three']

你可以使用逗号+空格作为分隔符,如下图所示,但如果原始字符串中的空格数不同,则无法使用。', '

s = 'one, two, three'
l = s.split(', ')
print(l)
# ['one', 'two', 'three']

s = 'one, two,  three'
l = s.split(', ')
print(l)
# ['one', 'two', ' three']

接下来将解释的字符串方法strip(),可以用来处理两个空格。

strip(): 删除字符串开头和结尾的多余字符。

strip()是一个去除字符串开头和结尾多余字符的方法。

如果省略该参数,将返回一个去掉空白字符的新字符串。原始字符串本身不会被改变。

s = '  one  '
print(s.strip())
# one

print(s)
#   one  

如果指定一个字符串作为参数,则该字符串中包含的字符将被删除。

s = '-+-one-+-'
print(s.strip('-+'))
# one

在这种情况下,空格不会被删除。因此,如果你想同时删除空白,请传递一个包括空格的字符串作为参数,如下所示。'-+ '

s = '-+- one -+-'
print(s.strip('-+'))
#  one 

s = '-+- one -+-'
print(s.strip('-+ '))
# one

strip()处理两端,但以下函数也可以使用。

  • lstrip():过程只是开始
  • rstrip():只处理线的末端。

列表理解符号:对列表元素应用函数和方法

如果你想对一个列表中的元素应用一个函数或方法,如果你想在最后得到列表,使用列表理解符号而不是for循环是明智的。

这里,我们对用split()分割字符串得到的列表应用 strip()。含有空白的逗号分隔的字符串中多余的空白可以被去除,从而形成一个列表。

s = 'one, two, three'
l = [x.strip() for x in s.split(',')]
print(l)
# ['one', 'two', 'three']

当这个方法应用于一个空字符串时,可以得到一个以单个空字符串为元素的列表。

s = ''
l = [x.strip() for x in s.split(',')]
print(l)
print(len(l))
# ['']
# 1

如果你想为一个空字符串得到一个空列表,你可以在列表理解符号中设置一个条件分支。

s = ''
l = [x.strip() for x in s.split(',') if not s == '']
print(l)
print(len(l))
# []
# 0

'one, , three'
另外,如果缺少一个逗号分隔的元素,如上所述,第一个方法将把它列为一个空字符串元素。

s = 'one, , three'
l = [x.strip() for x in s.split(',')]
print(l)
print(len(l))
# ['one', '', 'three']
# 3

如果你想忽略缺少的部分,你可以在列表理解符号中设置一个条件分支。

s = 'one, ,three'
l = [x.strip() for x in s.split(',') if not x.strip() == '']
print(l)
print(len(l))
# ['one', 'three']
# 2

以数字列表的形式获取

如果你想把一个用逗号分隔的数字串作为一个数字列表而不是一个字符串,应用int()或float()把字符串转换为列表理解符号的数字。

s = '1, 2, 3, 4'
l = [x.strip() for x in s.split(',')]
print(l)
print(type(l[0]))
# ['1', '2', '3', '4']
# <class 'str'>

s = '1, 2, 3, 4'
l = [int(x.strip()) for x in s.split(',')]
print(l)
print(type(l[0]))
# [1, 2, 3, 4]
# <class 'int'>

join(): 合并一个列表并将其作为一个字符串获得

在相反的模式下,如果你想加入一个列表并获得由特定分隔符分隔的字符串,请使用 join() 方法。

这很容易出错,但要注意 join() 是一个字符串方法,而不是一个列表方法。列表被指定为一个参数。

s = 'one, two,  three'
l = [x.strip() for x in s.split(',')]
print(l)
# ['one', 'two', 'three']

print(','.join(l))
# one,two,three

print('::'.join(l))
# one::two::three

你可以把它写成一行,如下所示。

s = 'one, two,  three'
s_new = '-'.join([x.strip() for x in s.split(',')])
print(s_new)
# one-two-three

如果你只是想改变一个固定的分隔符,用replace()方法来替换它更容易。

s = 'one,two,three'
s_new = s.replace(',', '+')
print(s_new)
# one+two+three
Copied title and URL