Python,拆分以拆分逗號分隔的字符串,刪除空格並轉換為列表

商業

在 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 循環。

在這裡,我們將 strip() 應用於通過 split() 拆分字符串獲得的列表。可以刪除包含空格的逗號分隔字符串中的額外空格以製作列表。

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