用 Shell 写程序还是不方便,今天用 Python 把昨天写的 Bash 脚本重写了,遇到两个关于字符串的个小问题:

1、做个类似 diff 工具的效果,大致指出两个字符串的不同之处,这个可以用 difflib 模块解决。

!/usr/bin/python

import difflib

text1 = """http://www.vpsee.com is a website which is dedicated for

building scalable websites on cloud platforms. The keywords are: Linux, Mac,

Cloud Computing, C, Python, MySQL, Nginx, VPS, Performance, Scalability,

Architecture, ..., etc. Have fun!"""

text1_lines = text1.splitlines()

text2 = """http://VPSee.com is a website which is dedicated for

building scalable websites on cloud platforms. The keywords are: Linux, Mac,

Cloud Computing, C, Python, MySQL, Nginx, VPS, Performance, Scalability,

Programming, Optimisation, Architecture, ... , etc. Have fun !"""

text2_lines = text2.splitlines()

d = difflib.Differ()

diff = d.compare(text1_lines, text2_lines)

print '\n'.join(list(diff))

程序运行结果如下:

- http://www.vpsee.com is a website which is dedicated for

? ^^^^^^^

+ http://VPSee.com is a website which is dedicated for

? ^^^

building scalable websites on cloud platforms. The keywords are: Linux, Mac,

Cloud Computing, C, Python, MySQL, Nginx, VPS, Performance, Scalability,

- Architecture, ..., etc. Have fun!

+ Programming, Optimisation, Architecture, ... , etc. Have fun !

2、如何比较两个字符串,并且忽略大小写、空白字符、TAB 制表符、换行等。这个很容易解决,把字符串转换成小写后 split,然后以空格为分隔符 join 在一起。

#!/usr/bin/python

a = " \t\n\n a B C d\t\n\n\n"

b = "\t\t\n\n a b c D\n\n\n\n"

s1 = a.lower()

s1 = ' '.join(s1.split())

s2 = b.lower()

s2 = ' '.join(s2.split())

if s1 == s1:

print "=="

else:

print "!="

python difflib详解_在 Python 中使用 difflib 比较字符串相关推荐

  1. python argv 详解_对python中的argv和argc使用详解

    主要问题 为什么argv中第一个,即index=0的内容就是文件名? python中argc是用什么实现的? 概念解释 argc:argument counter,命令行参数个数 argv:argum ...

  2. python语法详解_关于python:NLTK中解析的英语语法

    是否有可以立即使用并可以在NLTK中使用的即用型英语语法? 我搜索了使用NLTK进行解析的示例,但似乎我必须在解析句子之前手动指定语法. 非常感谢! 您可以看一下pyStatParser,这是一个简单 ...

  3. python解释器详解_浅析Python解释器的设计(一)

    一些铺垫(扯淡) 历史上,在Python 2.4以及之前的版本,py代码的执行,也就是从源码到bytecode分为两步: 解析py源码成为分析树 (Parser/pgen.c)基于分析树优化缩减byt ...

  4. pythondifflib详解_用python标准库difflib比较两份文件的异同详解

    [需求背景] 有时候我们要对比两份配置文件是不是一样,或者比较两个文本是否异样,可以使用linux命令行工具diff a_file b_file,但是输出的结果读起来不是很友好.这时候使用python ...

  5. python中的super用法详解_【Python】【类】super用法详解

    一.问题的发现与提出 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: class A: def __init__(sel ...

  6. python input函数详解_对Python3中的input函数详解

    下面介绍python3中的input函数及其在python2及pyhton3中的不同. python3中的ininput函数,首先利用help(input)函数查看函数信息: 以上信息说明input函 ...

  7. python six模块详解_对python中的six.moves模块的下载函数urlretrieve详解

    实验环境:windows 7,anaconda 3(python 3.5),tensorflow(gpu/cpu) 函数介绍:所用函数为six.moves下的urllib中的函数,调用如下urllib ...

  8. python协程详解_对Python协程之异步同步的区别详解

    一下代码通过协程.多线程.多进程的方式,运行代码展示异步与同步的区别. import gevent import threading import multiprocessing # 这里展示同步和异 ...

  9. python之sys模块详解_(转)python之os,sys模块详解

    python之sys模块详解 原文:http://www.cnblogs.com/cherishry/p/5725184.html sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和 ...

最新文章

  1. tensorflow1.0中的改善
  2. python做好的程序如何变成小程序-使用python编写简单的小程序编译成exe跑在win10上...
  3. lock mysql unlock_MySQL中的lock tables和unlock tables
  4. 精讲23种设计模式-基于装饰模式~设计多级缓存框架
  5. n平方的求和公式_高中数学:数列求和及数列的综合应用,掌握常见模型
  6. 测测自己最像哪幅名画?谷歌博物馆App新推自拍功能
  7. manage.py和simplejson调用报错解决
  8. 关于电脑桌面图标消失并且右键无法点击的情况
  9. 「leetcode」C++题解:15.三数之和 /3Sum 方法1:哈希法,方法2:排序+双指针,详细注释
  10. iOS开发之字符串(NSString)的拼接
  11. 实例学习SSIS(三)--使用包配置
  12. 手把手教你 如何安装 Ubuntu(乌班图)
  13. 龙芯mips64 Javajdk下载
  14. 因为迁移,所以出卖(1)
  15. 最新计算机教育 小学教育,2017年小学计算机教学计划
  16. C# 导入EXCEL 报错外部表不是预期的格式错误
  17. 高效能人士的习惯.提炼一种高效能思维
  18. 修改uxtheme.exe ,打造自己的主题
  19. linux怎么用命令打开wine,Linux系统运维:10分钟教你如何使用Wine在Linux下玩魔兽世界...
  20. kali 2020 安装w3af

热门文章

  1. mysql 开源订阅模式_Canal(增量数据订阅与消费 )快速配置
  2. flask websocket json_Win10环境下使用Flask配合Celery异步推送实时/定时消息/2020年最新攻略...
  3. 家居海报PSD模板,是否也是你理想的生活!
  4. 新媒体配图不愁,超优质图片素材--素材路上!
  5. 双十一要来了,如何设计出那些牛X的促销页面?
  6. 设计师需要收藏|一起来看看UI设计的配色专辑
  7. mysql+影响的行数+获取_CI中获取读操作的结果集行数+获取写操作的影响行数
  8. Linux内存管理:知识点总结(ARM64)
  9. Vector Packet Processor(VPP) - 层二层三转发图谱
  10. X86 register