解析 python imaplib 中的括号列表

2023-11-30

我正在寻找简单的方法来将 IMAP 响应中的括号列表拆分为 Python 列表或元组。我想去从

'(BODYSTRUCTURE ("text" "plain" ("charset" "ISO-8859-1") NIL NIL "quoted-printable" 1207 50 NIL NIL NIL NIL))'

to

(BODYSTRUCTURE, ("text", "plain", ("charset", "ISO-8859-1"), None, None, "quoted-printable", 1207, 50, None, None, None, None))

pyparsing的nestedExpr解析器函数默认解析嵌套括号:

from pyparsing import nestedExpr

text = '(BODYSTRUCTURE ("text" "plain" ("charset" "ISO-8859-1") NIL NIL "quotedprintable" 1207 50 NIL NIL NIL NIL))'

print nestedExpr().parseString(text)

prints:

[['BODYSTRUCTURE', ['"text"', '"plain"', ['"charset"', '"ISO-8859-1"'], 'NIL', 'NIL', '"quoted printable"', '1207', '50', 'NIL', 'NIL', 'NIL', 'NIL']]]

这是一个稍微修改过的解析器,它在解析时将整数字符串转换为整数,从“NIL”转换为 None,并从带引号的字符串中去除引号:

from pyparsing import (nestedExpr, Literal, Word, alphanums, 
    quotedString, replaceWith, nums, removeQuotes)

NIL = Literal("NIL").setParseAction(replaceWith(None))
integer = Word(nums).setParseAction(lambda t:int(t[0]))
quotedString.setParseAction(removeQuotes)
content = (NIL | integer | Word(alphanums))

print nestedExpr(content=content, ignoreExpr=quotedString).parseString(text)

Prints:

[['BODYSTRUCTURE', ['text', 'plain', ['charset', 'ISO-8859-1'], None, None, 'quoted-printable', 1207, 50, None, None, None, None]]]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解析 python imaplib 中的括号列表 的相关文章

随机推荐

  • 将循环替换为 *apply 替代方案

    我试图通过用 tapply 替换一些查找循环来加速我的代码 如何在 R 中进行查找和填充 就像在 Excel 中一样 我偶然发现了这段代码 DF lt data frame id c rep A 5 rep B 7 rep C 9 seri
  • Xcode Swift 4 Facebook 和 Twitter 共享不再起作用?

    我在我的应用程序中使用 Facebook 和 Twitter 共享 将 xCode 升级到 9 0 1 Swift 4 后 两者都不起作用 该方法说我的设备上没有 FB 或 Tw 帐户 但它们已经存在并且工作正常斯威夫特 3 Log 201
  • UITableViewController 的加载方法的逻辑顺序是什么?

    当执行segue来显示tableView时 UITableViewController的方法的逻辑执行顺序是什么 这是我最好的猜测 viewWillLayoutSubviews numberOfSectionsInTableView num
  • 如何在django中根据结束日期自动删除记录

    我有一个 Django 应用程序 其型号如下 Class Promotion models Model name models CharField max length 256 start date models DateTimeField
  • Typescript - “字符串”类型的表达式不能用于索引类型

    common js const boxNames one two module exports boxNames const common require common js const boxNames common boxNames c
  • 在 Eclipse 中使用支持设计库

    我正在开发一个项目 遗憾的是尚未迁移到 Android Studio 我想利用 Google 新的 support design 库中的浮动操作按钮 但我无法将其包含在我的项目中 我更新了 Android SDK 管理器中的支持库 首先 我
  • 附近查询与内部查询

    我使用 MongoDB 查询纬度 经度 25 英里以内的房屋 我第一次尝试使用近命令来执行此操作 如下所示 var near Query Near Coordinates coordinates Latitude coordinates L
  • Golang:当您具有多重继承时,接口的意义是什么[关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我是一名 Java 程序员 正在学习 Go 编程 到目前为止 我真的很喜欢这门语言 比 Java 多得多 但有一件事我有点困惑 Java之所以有接口 是因为类只能从一个类继承 既然Go允许
  • Ant unzip/unwar 目录名与文件名相同

    我需要使用 ANT 构建脚本在 tomcat webapps 目录中解压缩一个 war 文件 war 文件名不固定 如何将其解压到与war文件名相同的目录中 我知道如何解压缩文件 但问题是它将内容解压缩到指定的目标目录中 如果我不知道目录名
  • iOS 8 中的 SKSpriteNode 池似乎分配给重叠内存

    我可能错过了一些东西 但是我当前在应用商店中的应用程序可以在 iOS 7 中运行 但在 iOS 8 中完全失败 因为它不会创建预分配的精灵池 它们似乎被写入相同的地址 除非精灵具有特别不同的属性 在 iOS 7 中 以下代码生成包含 4 个
  • 如何解析 Google 地图地理编码结果

    我想使用地理编码从给定的纬度和经度检索地理地址 使用网站上给定的示例 在这个例子中我只需要城市名称纽约和国家名称即美国 但问题是出现的次数不止一种 这些词作为long name 我的问题是如何在 php 中解析这个 json xml 以获取
  • 单元测试中的随机数据?

    我有一位同事为对象编写单元测试 这些对象用随机数据填充其字段 他的原因是它提供了更广泛的测试范围 因为它将测试许多不同的值 而普通测试仅使用单个静态值 我给了他很多不同的反对理由 主要是 随机值意味着测试并不是真正可重复的 这也意味着如果测
  • Kafka批量侦听器反序列化消息不正确

    我正在使用具有以下配置的批量侦听 但我的消息错误地反序列化 KafkaListener id kafka buyers product sales pricing id topics kafka buyers product sales p
  • Cordova/phonegap 项目中的“需要”异常

    我正在尝试在 Android 平台上使用 Phonegap Cordova 构建混合移动应用程序 我也成功了 该应用程序在我的 Chrome 浏览器中的 Ripple 模拟器中按预期工作 我没有使用 Eclipe ADT 或 Android
  • 如何修复 Angular 5 中的 CORS 问题 http 请求 [重复]

    这个问题在这里已经有答案了 我是 Angular 5 的新手 我想发送 http 请求 但它在检查元素中返回 CORS 错误 Error XMLHttpRequest 无法加载http example com account create
  • AddToRole 和 IdentityRole 不是当前上下文模型的一部分

    我正在使用 Identity 2 1 来处理我的 asp net 应用程序中的用户角色 到目前为止 一切顺利 我创建了从 IdentityDBContext 扩展的新上下文 扩展了 IdentityUser 和 IdentityRole 以
  • 找不到文件 *.storyboardc

    I am trying to submit iOS app with extension but get a weird error on validation 我的小部件故事板名为 Main storyboard 属性文件如下所示 我猜这
  • htaccess 不允许访问带参数的子目录

    我正在尝试为 seo url 创建 htaccess 我创建了 htaccess 所有 url 都工作正常 排除带参数的子文件夹 它们重定向到站点文件夹 sitefolder是我的根目录 所有文件都在那里 示例 网址应如下所示 http l
  • 从数据库填充下拉列表并设置默认值

    现在我有一个用于填充 HTML 的可行解决方案
  • 解析 python imaplib 中的括号列表

    我正在寻找简单的方法来将 IMAP 响应中的括号列表拆分为 Python 列表或元组 我想去从 BODYSTRUCTURE text plain charset ISO 8859 1 NIL NIL quoted printable 120