python - 使用正则表达式搜索字符串的python方式中更好的代码的建议
问题描述
我有一段代码用于搜索特定的地址块并以某种方式格式化结果。
例如,我有一个输入字符串“70D76320 BEG 701D135D 702D72FC END EAR0 00000000 0000000”。在这种情况下,我需要提取“BEG”和“END”之间的地址,即“701D135D”和“702D72FC”,并按以下方式对其进行格式化:
[0]0x701D135D
[1]0x702D72FC
为此,我编写了一个脚本:
import re
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--address', help='Parse the input addresses')
args = parser.parse_args()
addressInfo = args.address
filter = re.compile(r'(BEG )((\w{8})\s)+(END )')
btInfo = filter.search(addressInfo)
print ("\n")
addresses = btInfo.group().split()
for idx in range(len(addresses)):
if((addresses[idx] != 'BEG') and (addresses[idx] != 'END')):
print ("[%d]0x%s" %(idx-1, addresses[idx]))
当我查看代码时,它更像是 c/c++ 代码而不是 python。有没有更好的方法在“真正的python风格”中达到同样的效果?</p>
解决方案
没有re
, butsplit()
和 with enumerate()
for 索引:
def get_addresses(input_string):
for address in input_string.split(' BEG ')[-1].split(' END ')[0].split(' '):
yield address
foo = "70D76320 BEG 701D135D 702D72FC END EAR0 00000000 0000000"
for idx, address in enumerate(get_addresses(foo)):
print(f'[{idx}]0x{address}')
- 使用 f-strings 需要 3.6+
推荐阅读
- swift - SwiftSoup 将数据分配给自定义类
- javascript - 查找构成特定数字的所有可能组合 JavaScript
- angular - Angular 6 mat-sidenav 切换菜单不起作用
- ios - 当 AVSpeechUtterance 使用 Alex 和属性字符串时,AVSpeechSynthesizer.speak 崩溃
- eclipse - 在 Eclipse 上设置 WxWidgets 项目
- angular - 元素定位 - 参考更高的组件
- database - 无法从数据网格连接到 postgres db
- python - postgresql django 中的近似行数
- c# - 使用 Web Api .NET Core 的简单 POST
- angular - 选项 405(不允许的方法) slimphp