在python中获取2个字符之间的字符串

时间:2013-02-23 17:21:50

标签: python string function character extraction

我需要从字符串中获取某些单词到新格式。例如,我使用输入调用该函数:

text2function('$sin (x)$ is an function of x')

我需要将它们放入StringFunction:

StringFunction(function, independent_variables=[vari])

我需要为函数得到'sin(x)',为vari得到'x'。所以它最终看起来像这样:

StringFunction('sin (x)', independent_variables=['x']
问题是,我似乎无法获得函数和变量。我试过了:

start = string.index(start_marker) + len(start_marker)
end = string.index(end_marker, start)
return string[start:end]

r = re.compile('$()$')
m = r.search(string)
if m:
     lyrics = m.group(1)

send = re.findall('$([^"]*)$',string)
似乎一切似乎都没有给我任何东西。难道我做错了什么?所有帮助表示赞赏。感谢。

4 个答案:

答案 0 :(得分:9)

Tweeky way!

>>> char1 = '('
>>> char2 = ')'
>>> mystr = "mystring(123234sample)"
>>> print mystr[mystr.find(char1)+1 : mystr.find(char2)]
123234sample

答案 1 :(得分:6)

$是正则表达式中的特殊字符(表示字符串的结尾)。你需要逃脱它:

>>> re.findall(r'\$(.*?)\$', '$sin (x)$ is an function of x')
['sin (x)']

答案 2 :(得分:3)

您需要开始搜索第二个字符超越 start

end = string.index(end_marker, start + 1)

因为否则它会再次在同一位置找到相同的字符:

>>> start_marker = end_marker = '$'
>>> string = '$sin (x)$ is an function of x'
>>> start = string.index(start_marker) + len(start_marker)
>>> end = string.index(end_marker, start + 1)
>>> string[start:end]
'sin (x)'

对于正则表达式,$字符被解释为锚点,而不是文字字符。转义它以匹配文字$(并查找 $而不是"的内容:

send = re.findall('\$([^$]*)\$', string)

给出:

>>> import re
>>> re.findall('\$([^$]*)\$', string)
['sin (x)']

正则表达式$()$否则与括号之间的任何内容都不匹配,即使您确实转义了$个字符。

答案 3 :(得分:1)

如果要在两个相同字符之间切成一个字符串(即!234567890!) 您可以使用

   line_word = line.split('!')
   print (line_word[1])