Python 通过两个字符串(分隔符)分割拆(split)分字符串的方法代码总结

Python 中,我们经常需要根据特定的分隔符将一个字符串分割成多个子字符串。当需要同时使用多个分隔符时,就需要一些特殊的处理方法。本文主要介绍Python中使用两个字符串进行对一个字符串拆分分割的方法,并且总结了一下通过str.split、re.findall、find和split实现方法和代码实现。

示例字符串

variable = (
    ";CREATEDBY~string~1~~72~0~0~0~~~0" +
    ";CREATEDBYNAME~string~1~~800~0~0~0~~~1" +
    ";CREATEDBYYOMINAME~string~1~~800~0~0~0~~~2;" +
    "CREATEDON~date~1~yyyy-MM-dd HH:mm:ss.SSS~26~0~0~0~~~3" +
    ";CREATEDONUTC~date~1~yyyy-MM-dd HH:mm:ss.SSS~26~0~0~0~~~4"
)
print(variable)

1、使用str.split进行分割字符串

str.split()方法默认以空格为分隔符来分割字符串。但当我们需要使用多个分隔符时,就需要处理一下进行多次分割。

variable = (
    ";CREATEDBY~string~1~~72~0~0~0~~~0" +
    ";CREATEDBYNAME~string~1~~800~0~0~0~~~1" +
    ";CREATEDBYYOMINAME~string~1~~800~0~0~0~~~2;" +
    "CREATEDON~date~1~yyyy-MM-dd HH:mm:ss.SSS~26~0~0~0~~~3" +
    ";CREATEDONUTC~date~1~yyyy-MM-dd HH:mm:ss.SSS~26~0~0~0~~~4"
)

for i in variable.strip(";").split(";"):
    print(i.split("~", 1)[0])
#or
print([i.split("~", 1)[0] for i in variable.strip(";").split(";")])

输出:

CREATEDBY
CREATEDBYNAME
CREATEDBYYOMINAME
CREATEDON
CREATEDONUTC
['CREATEDBY', 'CREATEDBYNAME', 'CREATEDBYYOMINAME', 'CREATEDON', 'CREATEDONUTC']

2、使用re.findall分割字符串

Python中,经常需要根据特定的分隔符将字符串分割成子字符串。当需要同时使用多个分隔符时,可以使用re.findall

import re

variable = (
    ";CREATEDBY~string~1~~72~0~0~0~~~0" +
    ";CREATEDBYNAME~string~1~~800~0~0~0~~~1" +
    ";CREATEDBYYOMINAME~string~1~~800~0~0~0~~~2;" +
    "CREATEDON~date~1~yyyy-MM-dd HH:mm:ss.SSS~26~0~0~0~~~3" +
    ";CREATEDONUTC~date~1~yyyy-MM-dd HH:mm:ss.SSS~26~0~0~0~~~4"
)

result = re.findall(r';(\w+)~', variable)
print(result)

输出

['CREATEDBY', 'CREATEDBYNAME', 'CREATEDBYYOMINAME', 'CREATEDON', 'CREATEDONUTC']

3、使用split()和find()分割字符串

Python中,经常需要将一个字符串根据特定的分隔符进行分割,从而得到一个字符串列表。当需要使用多个分隔符时,可以使用split()find()分割字符串。

import re

variable = (
    ";CREATEDBY~string~1~~72~0~0~0~~~0" +
    ";CREATEDBYNAME~string~1~~800~0~0~0~~~1" +
    ";CREATEDBYYOMINAME~string~1~~800~0~0~0~~~2;" +
    "CREATEDON~date~1~yyyy-MM-dd HH:mm:ss.SSS~26~0~0~0~~~3" +
    ";CREATEDONUTC~date~1~yyyy-MM-dd HH:mm:ss.SSS~26~0~0~0~~~4"
)

result = [item[:item.find('~')]  for item in  variable.split(';')]
print(result)

输出

['', 'CREATEDBY', 'CREATEDBYNAME', 'CREATEDBYYOMINAME', 'CREATEDON', 'CREATEDONUTC']

推荐阅读
cjavapy编程之路首页