gpt4 book ai didi

python - 如何通过Python中大括号之外的符号分割字符串?

转载 作者:行者123 更新时间:2023-12-01 02:34:34 25 4
gpt4 key购买 nike

我正在编写一个Python脚本来获得cos^n的线性化。为了在 LaTeX 中格式化,我想根据分隔符分割获得的表达式。

例如我

expr = \frac{1}{32}e^{-5\jmath\theta} + \frac{5}{32}e^{3\jmath\theta} + \frac{5}{16}e^{\jmath\theta} + \frac{5}{16}e^{-\jmath\theta} + \frac{5}{32} e^{-3\jmath\theta} + \frac{1}{32}e^{-5\jmath\theta}

我想按 ±\frac{.}{.} e^{.}

进行分组

我已经尝试过 re.split('([\+-])', expr) 但显然它也在大括号内分割......

由于这是我第一次使用正则表达式,我怎样才能得到我想要的东西?

最佳答案

以下是您可以使用的多个正则表达式。

首先,定义字符串时应注意 '\':

>>> '\f'
'\x0c'
>>> '\\f'
'\\f'
>>> print('\f')


>>> print('\\f')
\f

所以你可以这样定义文本:

>>> text = "expr = \\frac{1}{32}e^{-5\\jmath\\theta} + \\frac{5}{32}e^{3\\jmath\\theta} + \\frac{5}{16}e^{\\jmath\\theta} + \\frac{5}{16}e^{-\\jmath\\theta} + \\frac{5}{32} e^{-3\\jmath\\theta} + \\frac{1}{32}e^{-5\\jmath\\theta}"

您需要正则表达式的re模块:

>>> import re

您可以简单地查找 {} 内的所有内容:

>>> re.findall(r'\{.*?\}', text)
['{1}', '{32}', '{-5\\jmath\\theta}', '{5}', '{32}', '{3\\jmath\\theta}', '{5}', '{16}', '{\\jmath\\theta}', '{5}', '{16}', '{-\\jmath\\theta}', '{5}', '{32}', '{-3\\jmath\\theta}', '{1}', '{32}', '{-5\\jmath\\theta}']

如果您不想要 {}:

>>> re.findall(r'(?<=\{).*?(?=\})', text)
['1', '32', '-5\\jmath\\theta', '5', '32', '3\\jmath\\theta', '5', '16', '\\jmath\\theta', '5', '16', '-\\jmath\\theta', '5', '32', '-3\\jmath\\theta', '1', '32', '-5\\jmath\\theta']

如果你想要一个包含 3 个元素的元组列表:±\frac{.}{.} e^{.} 内的表达式:

>>> re.findall(r'\\frac\{(.*?)}{(.*?)} ?e\^{(.*?)}', text)
[('1', '32', '-5\\jmath\\theta'), ('5', '32', '3\\jmath\\theta'), ('5', '16', '\\jmath\\theta'), ('5', '16', '-\\jmath\\theta'), ('5', '32', '-3\\jmath\\theta'), ('1', '32', '-5\\jmath\\theta')]

如果您想要整个表达式,可能以 +- 开头:

>>> re.findall(r'[\+\-]? ?\\frac\{.*?}{.*?} ?e\^{.*?}', text)
[' \\frac{1}{32}e^{-5\\jmath\\theta}', '+ \\frac{5}{32}e^{3\\jmath\\theta}', '+ \\frac{5}{16}e^{\\jmath\\theta}', '+ \\frac{5}{16}e^{-\\jmath\\theta}', '+ \\frac{5}{32} e^{-3\\jmath\\theta}', '+ \\frac{1}{32}e^{-5\\jmath\\theta}']

关于python - 如何通过Python中大括号之外的符号分割字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46400040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com