繁体   English   中英

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

[英]getting string between 2 characters in python

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

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)

似乎一切似乎都没有给我任何东西。 难道我做错了什么? 所有帮助表示赞赏。 谢谢。

Tweeky方式!

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM