我需要从字符串中获取某些单词到新格式。例如,我使用输入调用该函数:
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)
似乎一切似乎都没有给我任何东西。难道我做错了什么?所有帮助表示赞赏。感谢。
答案 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])