如何从 python 中的字符串中提取单词
How to extract a word from a string in python
我正在以这种格式从智能合约中获取函数
我循环打印它们:
allFunctions = contract.all_functions()
for text in allFunctions:
print(text)
<Function approve(address,uint256)>
<Function balanceOf(address)>
<Function burn(uint256)>
<Function burnFrom(address,uint256)>
<Function decimals()>
<Function decreaseAllowance(address,uint256)>
<Function increaseAllowance(address,uint256)>
<Function mint(address,uint256)>
<Function name()>
<Function owner()>
<Function pause()>
<Function paused()>
<Function renounceOwnership()>
<Function symbol()>
现在我想动态地删除这个字符串中的所有内容,所以我只剩下实际的函数名
这是批准 balanceOf、名称、所有者暂停等...
我需要手动执行此操作,因为很多智能合约都有不同的函数名称
所以我不能使用 strip("")
关于如何解决这个问题的任何想法?
我得到的输出类型是
<class 'web3._utils.datatypes.allowance'>
使用space拆分,取第二个元素,使用括号拆分并取第一个元素
text = "<Function approve(address,uint256)>"
print(text.split(" ")[1].split("(")[0])
approve
假设字符串中的所有数据,您可以使用正则表达式:
import re
a = '''<Function approve(address,uint256)>
<Function balanceOf(address)>
<Function burn(uint256)>
<Function burnFrom(address,uint256)>
<Function decimals()>
<Function decreaseAllowance(address,uint256)>
<Function increaseAllowance(address,uint256)>
<Function mint(address,uint256)>
<Function name()>
<Function owner()>
<Function pause()>
<Function paused()>
<Function renounceOwnership()>
<Function symbol()>'''
re.findall("Function (.*)\(.*\)", a)
编辑:
import re
allFunctions = contract.all_functions()
for text in allFunctions:
print(re.findall("Function (.*)\(.*\)", text.__str__())[0])
您可以使用拆分:
txt = "<Function balanceOf(address)>"
txt.split()[1].split('(')[0]
类似这样的方法似乎有效:
functions = [func[:-1] for func in "".join(allFunctions).split('<Function ')][1:]
我正在以这种格式从智能合约中获取函数 我循环打印它们:
allFunctions = contract.all_functions()
for text in allFunctions:
print(text)
<Function approve(address,uint256)>
<Function balanceOf(address)>
<Function burn(uint256)>
<Function burnFrom(address,uint256)>
<Function decimals()>
<Function decreaseAllowance(address,uint256)>
<Function increaseAllowance(address,uint256)>
<Function mint(address,uint256)>
<Function name()>
<Function owner()>
<Function pause()>
<Function paused()>
<Function renounceOwnership()>
<Function symbol()>
现在我想动态地删除这个字符串中的所有内容,所以我只剩下实际的函数名 这是批准 balanceOf、名称、所有者暂停等...
我需要手动执行此操作,因为很多智能合约都有不同的函数名称
所以我不能使用 strip("
我得到的输出类型是
<class 'web3._utils.datatypes.allowance'>
使用space拆分,取第二个元素,使用括号拆分并取第一个元素
text = "<Function approve(address,uint256)>"
print(text.split(" ")[1].split("(")[0])
approve
假设字符串中的所有数据,您可以使用正则表达式:
import re
a = '''<Function approve(address,uint256)>
<Function balanceOf(address)>
<Function burn(uint256)>
<Function burnFrom(address,uint256)>
<Function decimals()>
<Function decreaseAllowance(address,uint256)>
<Function increaseAllowance(address,uint256)>
<Function mint(address,uint256)>
<Function name()>
<Function owner()>
<Function pause()>
<Function paused()>
<Function renounceOwnership()>
<Function symbol()>'''
re.findall("Function (.*)\(.*\)", a)
编辑:
import re
allFunctions = contract.all_functions()
for text in allFunctions:
print(re.findall("Function (.*)\(.*\)", text.__str__())[0])
您可以使用拆分:
txt = "<Function balanceOf(address)>"
txt.split()[1].split('(')[0]
类似这样的方法似乎有效:
functions = [func[:-1] for func in "".join(allFunctions).split('<Function ')][1:]