14

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

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

4 回答 4

27

Tweeky方式!

>>> char1 = '('
>>> char2 = ')'
>>> mystr = "mystring(123234sample)"
>>> print mystr[mystr.find(char1)+1 : mystr.find(char2)]
123234sample
于 2013-05-30T11:40:17.337 回答
9

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

>>> re.findall(r'\$(.*?)\$', '$sin (x)$ is an function of x')
['sin (x)']
于 2013-02-23T17:28:06.840 回答
7

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

   line_word = line.split('!')
   print (line_word[1])
于 2018-12-21T23:17:50.097 回答
4

您需要开始搜索超出 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)'

对于您的正则表达式,该$字符被解释为锚点,而不是文字字符。将其转义以匹配文字$(并查找not $而不是 not的东西"

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

这使:

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

$()$否则,即使您确实对$字符进行了转义,正则表达式也不会真正匹配括号之间的任何内容。

于 2013-02-23T17:29:40.663 回答