文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python标准模块shlex

2023-01-31 05:10

关注

shlex模块实现了一个类来解析简单的类shell语法,可以用来编写领域特定的语言,或者解析加引号的字符串。

处理输入文本时有一个常见的问题,往往要把一个加引号的单词序列标识为一个实体。根据引号划分文本可能与预想的并不一样,特别是嵌套有多层引号时。例:

有文本quotes.txt,内容如下

This string has embedded "double quotes" and 'single quotes' in it,

and even "a 'nested example'".

一种简单的方法是构造一个正则表达式,来查找引号之外的文本部分,将它们与引号内的文本分开,或者反之。这可能带来不必要的复杂性,而且很容易因为边界条件出错,如撇号或者拼写错误。更好地解决方案是使用一个真正的解析器,如shlex模块提供的解析器。以下是一个简单的例子,它使用shlex类打印输入文件中找到的token。

  1. #!/usr/bin/python 
  2.  
  3. import shlex 
  4. import sys 
  5.  
  6. if len(sys.argv) != 2: 
  7.     print 'Please specify one filename on the command line.' 
  8.     sys.exit(1) 
  9.  
  10. filename = sys.argv[1] 
  11. body = file(filename, 'rt').read() 
  12. print 'ORIGINAL:', repr(body) 
  13. print 
  14.  
  15. print 'TOKENS:' 
  16. lexer = shlex.shlex(body) 
  17. for token in lexer: 
  18.     print repr(token) 

执行    python  shlex_example.py  quotes.txt

结果

ORIGINAL: 'This string has embedded "double quotes" and \'single quotes\' in it,\nand even "a \'nested example\'".\n'


TOKENS:

'This'

'string'

'has'

'embedded'

'"double quotes"'

'and'

"'single quotes'"

'in'

'it'

','

'and'

'even'

'"a \'nested example\'"'

'.'

另外,孤立的引号(如I'm)也会处理。看以下文件

This string has an embedded apostrophe, doesn't it?

用shlex完全可以找出包含嵌入式撇号的token

执行    python  shlex_example.py  apostrophe.txt

结果:

ORIGINAL: "This string has an edbedded apostrophe, doesn't it?"

TOKENS:
'This'
'string'
'has'
'an'
'edbedded'
'apostrophe'
','
"doesn't"
'it'
'?'
 
 
可以看出shlex非常智能,比正则表达式方便多了。
 
 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯