如何在2个字符串中获取一个字符串?

时间:2018-11-07 08:43:32

标签: python string

所以我有3个变量。

char_in = "("
char_out = ")"
string = "[(0, 0, 255), (250, 250), 50]"

如何获取char_in和char_out内的每个字符串的列表。 喜欢["0, 0, 255", "250, 250"]

2 个答案:

答案 0 :(得分:0)

您可以使用re模块:

In [1294]: re.findall('\('+ char_in +'.*?' + char_out+ '\)',string)
Out[1294]: ['0, 0, 255', '250, 250']

您可以具有以下功能:

In [1309]: def get_in_between(char_in, string, char_out):
      ...:     return re.findall(re.escape(char_in)+'(.*?)'+re.escape(char_out), string)
      ...: 

In [1310]: get_in_between('(','[(0, 0, 255), (250, 250), 50]', ')')
Out[1310]: ['0, 0, 255', '250, 250']

让我知道这是否有帮助。

答案 1 :(得分:0)

如果char_inchar_out必须为(),则Mayank Porwal的答案有效。要处理其他字符,需要对其进行转义并将其插入正则表达式中。

>>> string = "[(0, 0, 255), (250, 250), 50]"
>>> char_in = "("
>>> char_out = ")"
>>> re.findall(re.escape(char_in)+'(.*?)'+re.escape(char_out), string)
['0, 0, 255', '250, 250']

>>> string = "[<0, 0, 255>, <250, 250>, 50]"
>>> char_in = '<'
>>> char_out = '>'
>>> re.findall(re.escape(char_in)+'(.*?)'+re.escape(char_out), string)
['0, 0, 255', '250, 250']