如何使用 python 从代码中提取数据
how to extract data from a code using python
我有一些函数,例如使用简单语言编写的 .txt 文件,我需要使用 python 从这些函数中提取数据。例如考虑以下部分。
代码段 -
If MarketPosition = 0 and (EntriesToday(Date) < 1 or EndofSess) and
EntCondL
then begin
Buy("EnStop-L") NShares shares next bar at EntPrL stop;
end;
这里我需要提取部分
- 市场位置 = 0
- 今天的条目(日期)< 1
- EndofSess
- EntCondL
并使用 python 识别 =
、<
标志。
提前致谢。
下面是一个在 if
和 then
之间查找和拆分文本的示例
结果是单个元素的列表:变量、括号和比较运算符。
code = """
If MarketPosition = 0 and (EntriesToday(Date) < 1 or EndofSess) and
EntCondL
then begin
Buy("EnStop-L") NShares shares next bar at EntPrL stop;
end;
"""
import re
words = re.split("\s+|(\(|\)|<|>|=|;)", code)
is_if = False
results = []
current = None
for token in words:
if not token:
continue
elif token.lower() == "if":
is_if = True
current = []
elif token.lower() == "then":
is_if = False
results.append(current)
elif is_if:
if token.isdecimal(): # Detect numbers
try:
current.append(int(token))
except ValueError:
current.append(float(token))
else: # otherwise just take the string
current.append(token)
print(results)
结果:
['MarketPosition', '=', 0, 'and', '(', 'EntriesToday', '(', 'Date', ')', '<', 1, 'or', 'EndofSess', ')', 'and', 'EntCondL']
我认为从这里开始更容易
(我不知道你需要哪种形式的数据,例如括号重要吗?)
我认为您正在寻找某些运算符的前缀和后缀
我建议您找到这些运算符列表并使用它的位置来获取前缀和后缀
我有一些函数,例如使用简单语言编写的 .txt 文件,我需要使用 python 从这些函数中提取数据。例如考虑以下部分。
代码段 -
If MarketPosition = 0 and (EntriesToday(Date) < 1 or EndofSess) and
EntCondL
then begin
Buy("EnStop-L") NShares shares next bar at EntPrL stop;
end;
这里我需要提取部分
- 市场位置 = 0
- 今天的条目(日期)< 1
- EndofSess
- EntCondL
并使用 python 识别 =
、<
标志。
提前致谢。
下面是一个在 if
和 then
之间查找和拆分文本的示例
结果是单个元素的列表:变量、括号和比较运算符。
code = """
If MarketPosition = 0 and (EntriesToday(Date) < 1 or EndofSess) and
EntCondL
then begin
Buy("EnStop-L") NShares shares next bar at EntPrL stop;
end;
"""
import re
words = re.split("\s+|(\(|\)|<|>|=|;)", code)
is_if = False
results = []
current = None
for token in words:
if not token:
continue
elif token.lower() == "if":
is_if = True
current = []
elif token.lower() == "then":
is_if = False
results.append(current)
elif is_if:
if token.isdecimal(): # Detect numbers
try:
current.append(int(token))
except ValueError:
current.append(float(token))
else: # otherwise just take the string
current.append(token)
print(results)
结果:
['MarketPosition', '=', 0, 'and', '(', 'EntriesToday', '(', 'Date', ')', '<', 1, 'or', 'EndofSess', ')', 'and', 'EntCondL']
我认为从这里开始更容易 (我不知道你需要哪种形式的数据,例如括号重要吗?)
我认为您正在寻找某些运算符的前缀和后缀
我建议您找到这些运算符列表并使用它的位置来获取前缀和后缀