如何从 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:]