Python字符串拆分

时间:2020-02-23 14:43:30  来源:igfitidea点击:

Python字符串split()函数用于根据定界符将字符串拆分为字符串列表。

Python字符串拆分

Python字符串split()函数语法为:

str.split(sep=None, maxsplit=-1)

sep参数用作分隔符。
如果字符串包含连续的定界符,则返回一个空字符串。
分隔符参数也可以是多个字符。

如果未提供定界符或者"无",则将空格视为定界符。
在这种情况下,如果存在前导或者尾随空格,则不会返回任何空字符串。
同样,多个空格将被视为单个定界符。

如果提供了maxsplit,则最多完成maxsplit个拆分(因此,列表中最多包含maxsplit + 1个元素)。
如果未指定maxsplit或者-1,则对拆分数没有限制,并且所有可能的拆分均返回列表中。

Python字符串split()示例

让我们看一个简单的示例,其中将根据指定的分隔符将字符串拆分为列表。

s = 'Python is Nice'

# simple string split example
str_list = s.split(sep=' ')
print(str_list)

输出:

['Python', 'is', 'Nice']

字符串split()与maxsplit示例

s = 'Python is Nice'

str_list = s.split(sep=' ', maxsplit=1)
print(str_list)

输出:['Python','is Nice']

请注意,返回的列表只有2个项目,字符串仅被拆分了一次。

未提供sep或者无

s = '  Java  Python iOS    Android  '
str_list = s.split()
print(str_list)

输出:['Java','Python','iOS','Android']

返回列表中将忽略前导空格和尾随空格。
同样,连续的空格也被视为单个定界符。

多行字符串拆分示例

multiline_str = 'Hi There\nHow are you?\nI am fine'
multiline_str_split_list = multiline_str.split(sep='\n')
for s in multiline_str_split_list:
  print(s)

输出:

Hi There
How are you?
I am fine

多字符分隔符示例

s = 'Hi||Hello||Adios'
str_list = s.split('||')
print(str_list)

输出:['Hi','Hello','Adios']

str.split()函数示例

我们也可以直接从str类使用split()函数。

print(str.split('ABACAD', sep='A'))
print(str.split('ABACAD', sep='A', maxsplit=2))

输出:

['', 'B', 'C', 'D']
['', 'B', 'CAD']

请注意,当第一个字符与分隔符匹配时,将返回空字符串。

用户输入的CSV字符串拆分示例

最后,让我们看一个真实的示例,在该示例中,用户将输入CSV数据,然后将其拆分为字符串列表。

input_csv = input('Please enter CSV Data\n')
input_csv_split_list = input_csv.split(sep=',')
print('Input Data Length =', len(input_csv_split_list))
print('List of inputs =', input_csv_split_list)

输出:

Please enter CSV Data
Java,Android,Python,iOS,jQuery
Input Data Length = 5
List of inputs = ['Java', 'Android', 'Python', 'iOS', 'jQuery']

这就是python字符串split()函数示例的全部内容。
这是一个非常有用的功能,可以根据一些定界符将字符串分割成列表。

Python字符串rsplit()

Python字符串rsplit()函数与split()函数非常相似。
唯一的区别是分割从字符串的末尾开始一直到最前面。

让我们看一些rsplit()函数示例。

# rsplit() example
s = 'Python is Awesome'
str_list = s.rsplit(sep=' ')
print(str_list)

str_list = s.rsplit(sep=' ', maxsplit=1)
print(str_list)

s = '  Java  Python iOS    Android  '
str_list = s.rsplit()
print(str_list)

multiline_str = 'Hi There\nHow are you?\nI am fine'
multiline_str_split_list = multiline_str.rsplit(sep='\n')
for s in multiline_str_split_list:
  print(s)

s = 'Hi||Hello||Adios'
str_list = s.rsplit('||')
print(str_list)

# using split() with str class
print(str.rsplit('ABACAD', sep='A'))
print(str.rsplit('ABACAD', sep='A', maxsplit=2))

# csv and user input example
input_csv = input('Please enter CSV Data\n')
input_csv_split_list = input_csv.rsplit(sep=',')
print('Input Data Length =', len(input_csv_split_list))
print('List of inputs =', input_csv_split_list)

输出:

['Python', 'is', 'Awesome']
['Python is', 'Awesome']
['Java', 'Python', 'iOS', 'Android']
Hi There
How are you?
I am fine
['Hi', 'Hello', 'Adios']
['', 'B', 'C', 'D']
['AB', 'C', 'D']
Please enter CSV Data
x,y,z
Input Data Length = 3
List of inputs = ['x', 'y', 'z']

注意,当提供maxsplit参数时,差异是可见的。
否则,split()和rsplit()函数的输出相同。