Python搜索/提取字符前后的字符串

时间:2014-12-20 08:17:25

标签: python regex

需要帮助在python

中使用正则表达式提取字符前后的字符串
string = "My City | August 5"

我想提取"My City"并提取"August 5"

string1 = "My City"
string2 = "August 5"

4 个答案:

答案 0 :(得分:3)

这里不需要正则表达式,只需使用str.partition(),分割|加上周围的空格:

string1, separator, string2 = string.partition(' | ')

演示:

>>> string = "My City | August 5"
>>> string.partition(' | ')
('My City', ' | ', 'August 5')
>>> string1, separator, string2 = string.partition(' | ')
>>> string1
'My City'
>>> string2
'August 5'

str.partition()只拆分字符串一次;如果有|个字符,那么这些字符将作为string2的一部分保留。

如果您想使其更加健壮并处理管道符号周围的任意数量的空格,您可以拆分 |并使用str.strip()删除从两个字符串的开头和结尾开始的任意数量的空格:

string1, separator, string2 = map(str.strip, string.partition('|'))

答案 1 :(得分:2)

这里你不需要正则表达式。只需输入

即可
string = "My City | August 5"
string1, string2 = string.split("|")

如果要裁剪结果中的尾随空格,可以使用

string1 = string1.strip(" ")
string2 = string2.strip(" ")

答案 2 :(得分:1)

当然,这是一个用于拆分字符串的内置方法:

string = "My City | August 5"
delimiter = ' | '  # note the spaces are part of your delimiter
list_of_partial_strings = string.split(delimiter)

Python Standard Library documentation中有关于字符串方法的优秀文档。

答案 3 :(得分:1)

通过正则表达式,就像

>>> import re
>>> string = "My City | August 5"
>>> string1, string2 = re.split(r'\s+\|\s+', string)
>>> string1
'My City'
>>> string2
'August 5'

\s+匹配一个或多个空格字符,\|匹配文字|符号。您必须转义正则表达式中的|以匹配文字|符号,因为|管道是正则表达式中的特殊元字符,通常称为交替运算符或逻辑OR运算符。