python字符串比较

re模块

為{幸葍}努か 提交于 2019-12-04 08:07:34
re模块 一、正则表达式 正则表达式本身是一种小型的、高度专业化的编程语言,它并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了。而在python中,通过内嵌集成re模块,程序员们可以直接调用来实现正则匹配。正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。 下图展示了使用正则表达式进行匹配的流程: 正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。如果表达式中有量词或边界,这个过程会稍微有一些不同,但也是很好理解的,看下图中的示例以及自己多使用几次就能明白。 下图列出了Python支持的正则表达式元字符和语法: 1.1 数量词的贪婪模式与非贪婪模式 正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。例如:正则表达式"ab

golang字符串常用的系统函数

跟風遠走 提交于 2019-12-03 12:17:09
1.统计字符串的长度,按字节len(str)   str := "hello北京"   fmt.Println("str len=", len(str)) 2.字符串遍历,同时处理有中文的问题 r := []rune(str) str2 := "hello北京" r := []rune(str2) for i := 1; i < len(r); i++ { fmt.Printf("字符=%c\n", r[i]) } 3.字符串转整数: n, err := strconv.Atoi("12")    n, err := strconv.Atoi("5656") if err != nil{ fmt.Println("转换错误", err) }else { fmt.Println("转成的结果是", n) } 4.整数转字符串 str = strconv.Itoa(12345) str = strconv.Itoa(123456) fmt.Printf("str=%v, str=%T", str, str) 5.字符串转 []byte: var bytes = []byte("hello go") var bytes = []byte("hello go") fmt.Printf("bytes=%v\n", bytes) 6.[]byte 转字符串: str = string([

第四章 数值和字符串类型

半世苍凉 提交于 2019-12-03 11:51:07
@数值和字符串 python的数据类型体现在数据上,数据是什么类型,他就是什么类型。 数值 数值分为整数(int),浮点数(float)以及decimal和fraction 变量引用: 表达式,有加减乘除。 可以用占位符传递数据:(浮点型显示并保留两位小数) 用于比较: 在数值中,我们有一个内置的math函数可以直接导入引用。 math.floor() 在横坐标中往左移; math.ceil() 在横坐标中往右移 math.trunc() 在横左边中往0移 round()四舍五入法。 数值可以转换成二进制(bin),八进制,十六进制(hex) math还有很多用法,比如math.pi是3.14,math.sqrt()数据的平方根。 在浮点数中,decimall的精度要高点。 字符串 字符串可以用单引号,双引号以及三引号。 在引用字符串或者写语句的时候,通常用到转义符。 换行\n 退格\b 等等 字符串可以相加,相加是叠加的意思, 字符串可以乘,是重复的意思。 字符串可以计算他的字符长度。 通过for循环,我们可以遍历字符串里面每一个字符。 字符串可以截取。 字符还有自己对应的位置。 这些基础知识也没多少,学习需要慢慢来,细水长流。 来源: https://www.cnblogs.com/daodexuke/p/11794897.html

python基础面试题(全网最全!)

只愿长相守 提交于 2019-12-03 07:50:31
目录 1、为什么学习Python? 2、通过什么途径学习的Python? 3、Python和Java、PHP、C、C#、C++等其他语言的对比? 4、简述解释型和编译型编程语言? 5、Python解释器种类以及特点? 6、位和字节的关系? 7、b、B、KB、MB、GB 的关系? 8、请至少列举5个 PEP8 规范 9、通过代码实现如下转换: 10、请编写一个函数实现将IP地址转换成一个整数。 11、python递归的最大层数? 12、求结果: 13、ascii、unicode、utf-8、gbk 区别? 14、字节码和机器码的区别? 15、三元运算规则以及应用场景? 16、列举 Python2和Python3的区别? 17、用一行代码实现数值交换: 18、Python3和Python2中 int 和 long的区别? 19、xrange和range的区别? 20、文件操作时:xreadlines和readlines的区别? 21、列举布尔值为False的常见值? 22、字符串、列表、元组、字典每个常用的5个方法? 23、lambda表达式格式以及应用场景? 24、pass的作用? 25、*arg和**kwarg作用? 26、is和==的区别? 27、简述Python的深浅拷贝以及应用场景? 28、Python垃圾回收机制? 29、python的可变类型和不可变类型? 30、求结果:

最基础的数据结构-左轻侯

一曲冷凌霜 提交于 2019-12-03 06:07:53
作者:左轻侯 创建时间:2007-03-04 22:29:06 最后修改时间:2008-01-18 22:07:52 本文发表于《程序员》2007年第3期      最基础的数据结构   左轻侯   2007.2.3      引言       任何一个受过专业训练的程序员,对“数据结构”这门课程中涉及到的各种数据结构都不会感到陌生。但是,在实际的编程工作中,大部分的数据结构都不会用到,而且也许永远都不会用到。造成这种现象的原因有二:一是根据80/20法则,常用的数据结构只会占到少部分;二是计算机语言往往已经对常用的数据结构进行了良好的封装,程序员不需要关心内部的实现。    虽然如此,深入地理解基本数据结构的概念和实现细节,仍然是每一个程序员的任务。这不仅是因为,掌握这些知识,将有利于更加正确和灵活地应用它们,而且也是因为,对于语言背后的实现细节的求知欲,是一个优秀的程序员的素质。    本文将讨论实际编程最经常使用的三种数据结构:字符串、数组和Hash表,比较它们在不同语言中的实现思路,并涉及它们的使用技巧。      字符串    严格地说,字符串(string)甚至不能算作一种单独的数据结构,至少在C语言中,它仅仅是某种特定类型的数组而已。但是,字符串在实际使用中是如此重要,在不同语言中的实现又差异颇大,因此,它值得被作为一种抽象数据类型单独进行讨论

day1------python基础

让人想犯罪 __ 提交于 2019-12-03 05:21:49
python 基础 一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。 最新的TIOBE排行榜,Python已经占据世界第四名的位置, Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言。 TOP 10 编程语言 TIOBE 指数走势( 2002-2018 ) 由上图可见,Python整体呈上升趋势,反映出Python应用越来越广泛并且也逐渐得到业内的认可!!! Python可以应用于众多领域, 如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。 目前 Python 主要应 用领域: 云计算: 云计算最火的语言, 典型应用OpenStack WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox,豆瓣。。。, 典型WEB框架有Django 科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib,

golang字符串常用的系统函数

匿名 (未验证) 提交于 2019-12-03 00:17:01
1.统计字符串的长度,按字节len(str)   str := "hello北京"   fmt.Println("str len=", len(str)) 2.字符串遍历,同时处理有中文的问题 r := []rune(str) str2 := "hello北京" r := []rune(str2) for i := 1; i < len(r); i++ { fmt.Printf("字符=%c\n", r[i]) }    n, err := strconv.Atoi("5656") if err != nil{ fmt.Println("转换错误", err) }else { fmt.Println("转成的结果是", n) } 4.整数转字符串 str = strconv.Itoa(12345) str = strconv.Itoa(123456) fmt.Printf("str=%v, str=%T", str, str) 5.字符串转 []byte: var bytes = []byte("hello go") var bytes = []byte("hello go") fmt.Printf("bytes=%v\n", bytes) str = string([]byte{97, 98, 99}) fmt.Printf("str=%v\n", str) str :=

5. 最长回文子串

匿名 (未验证) 提交于 2019-12-02 23:43:01
s s 1000 1 : "babad" : "bab" : "aba" 2 : "cbbd" : "bb" 解法 1:中心扩散 思路很简单:遍历每一个索引,以这个索引为中心,往两边扩散,看最多能扩散多远。具体的做法是利用“回文串”中心对称的特点,在枚举子串的过程中进行剪枝。要注意一个细节:回文串的长度可能是奇数,也可能是偶数。 我们完全可以设计一个方法,兼容以上两种情况: 1、如果传入重合的索引编码,进行中心扩散,此时得到的最长回文子串的长度是奇数; 2、如果传入相邻的索引编码,进行中心扩散,此时得到的最长回文子串的长度是偶数。 Python: class Solution: def longestPalindrome(self, s): size = len(s) if size == 0: return '' # 至少就是 1 longest_palindrome = 1 longest_palindrome_str = s[0] for i in range(size): # 返回当前最长回文子串、和这个最长回文子串的长度 palindrome_odd, odd_len = self.__center_spread(s, size, i, i) palindrome_even, even_len = self.__center_spread(s, size, i, i +

re 模块

匿名 (未验证) 提交于 2019-12-02 23:42:01
Ŀ¼ 正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。 re模块的基本使用方法 import re a = re.findall("匹配规则", "这个字符串是否有匹配规则的字符") print(a) # 以列表形式返回匹配到的字符串 ^元字符:字符串开始位置与匹配规则符合就匹配,否则不匹配 匹配字符串开头。在多行模式中匹配每一行的开头 [^a-z]反取: 表示匹配出除字母外的字符,^元字符如果写到字符集里就是反取 $元字符:字符串结束位置与匹配规则符合就匹配,否则不匹配 匹配字符串末尾,在多行模式中匹配每一行的末尾 *元字符:需要字符串里完全符合,匹配规则,就匹配,前面的一个字符可以是0个或是多个原生字符。匹配前一个字符0或多次,贪婪匹配前导字符有多少个就匹配多少个 +元字符:需要字符串里完全符合,匹配规则,就匹配,前面的一个字符可以是1个或多个原本字符匹配前一个字符1次或无限次,贪婪匹配前导字符有多少个就匹配多少个 ?元字符(防止贪婪匹配):需要字符串里完全符合,匹配规则,就匹配,前面的一个字符可以是0个或1个原本字符匹配一个字符0次或1次 |元字符(或):|或,或就是前后其中一个符合就匹配 {}元字符(范围):需要字符串里完全符合,匹配规则,就匹配,(规则里的 {} 元字符)前面的一个字符

字体反爬之实习僧

匿名 (未验证) 提交于 2019-12-02 23:34:01
字体反爬是爬虫不可避免的一道关卡,因为这是成本比较低,而且效果还不错的一种方式。 今天我们先看看实习僧的字体爬虫怎么破解。首先我们先随便搜索一个职业, https://www.shixiseng.com/interns?k=数据库&p=1。F12查看源码发现,职业的某些汉字字母和所有数字都是框框,这基本可以确定使用了自定义字体。 这里可以看到li标签有一个font属性,点击一下这个标签,右边就会出现详细的css属性。我们只看.font,发现有font-family: myFont这个信息。我们先找到这个字体文件,这个可以去原网页或者加载的js里搜索,可以找到这段代码是包含在原网页的。而字体文件是以base64字符串的格式传输的,先用python自带的base64库解码一下字符串,然后另存为ttf文件。 import base64 s = '加密字符串' with open('a.ttf', 'wb') as f: f.write(base64.b64decode(s)) 然后用FontCreato这个工具打开字体文件: 这就是被重新编码的文字,他们的编码和utf-8是不一样的,所以浏览器会显示为框框。但浏览器在文字渲染(浏览器通过绘制相应像素点来达到显示整个汉字)的时候被显示成想要的汉字,因为它们的渲染代码在字体文件中被更改。 到了这里