Pythonpython 字符串比较索引溢出问题

3270人阅读
1.字符串的索引
给出一个字符串,可输出任意一个字符,如果索引为负数,就是相当于从后向前数。
&&& str=&HelloWorld!&
&&& print str[0]
&&& print str[-4]
2.字符串的分片
分片就是从给定的字符串中分离出部分内容。
&&& str=&HelloWorld!&
&&& print str[0]
&&& print str[-4]
&&& print str[1:4]
&&& print str[:-7]
&&& print str[5:]
分片的扩展形式:
str[I,J,K]意思是从I到J-1,每隔K个元素索引一次,如果K为负数,就是按从由往左索引。
&&& print str[2:7:2]
&&& print str[2:7:1]
ord函数是将字符转化为对应的ASCII码值,而chr函数是将数字转化为字符。例如:
&&& print ord('a')
&&& print chr(97)
Python中修改字符串只能重新赋值。
每修改一次字符串就生成一个新的字符串对象,这看起来好像会造成效率下降,其实,在Python内部会自动对不再使用的字符串进行垃圾回收,所
以,新的对象重用了前面已有字符串的空间。
字符串格式化:
&&& &%d %s %d you!&%(1,&goujinping&,8)
'1 goujinping 8 you!'
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:773871次
积分:12967
积分:12967
排名:第465名
原创:478篇
转载:42篇
评论:182条
(1)(4)(3)(4)(38)(4)(1)(2)(5)(1)(4)(2)(1)(7)(10)(8)(8)(12)(16)(31)(20)(28)(49)(28)(17)(42)(18)(29)(26)(15)(3)(8)(9)(8)(11)(3)(46)页面导航:
→ 正文内容 Python 异常处理
Python 异常处理实例详解
python提供了两个非常重要的功能(异常处理和断言(Assertions))来处理python程序在运行中出现的异常和错误,你可以使用该功能来捕捉python程序的异常
一、什么是异常?异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。异常是Python对象,表示一个错误。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。二、异常处理捕捉异常可以使用try/except语句。try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。如果你不想在异常发生时结束你的程序,只需在try里捕获它。
异常语法:以下为简单的try....except...else的语法: 代码如下:try:&语句&&&&&&&& #运行别的代码except &名字&:&语句&&&&&&&& #如果在try部份引发了'name'异常except &名字&,&数据&:&语句&&&&&&&& #如果引发了'name'异常,获得附加的数据else:&语句&&&&&&&& #如果没有异常发生try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。
如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。
异常处理实例1:下面是简单的例子,它打开一个文件,在该文件中的内容写入内容,且并未发生异常: 代码如下:#!/usr/bin/python
try:&& fh = open("testfile", "w")&& fh.write("This is my test file for exception handling!!")except IOError:&& print "Error: can\'t find file or read data"else:&& print "Written content in the file successfully"&& fh.close()以上程序输出结果: 代码如下:Written content in the file successfully异常处理实例2:下面是简单的例子,它打开一个文件,在该文件中的内容写入内容,但文件没有写入权限,发生了异常: 代码如下:#!/usr/bin/python
try:&& fh = open("testfile", "w")&& fh.write("This is my test file for exception handling!!")except IOError:&& print "Error: can\'t find file or read data"else:&& print "Written content in the file successfully"以上程序输出结果: 代码如下:Error: can't find file or read data
三、使用except而不带任何异常类型
你可以不带任何异常类型使用except,如下实例: 代码如下:try:&& You do && ......................except:&& If there is any exception, then execute this block.&& ......................else:&& If there is no exception then execute this block. 以上方式try-except语句捕获所有发生的异常。但这不是一个很好的方式,我们不能通过该程序识别出具体的异常信息。因为它捕获所有的异常。四、使用except而带多种异常类型你也可以使用相同的except语句来处理多个异常信息,如下所示: 代码如下:try:&& You do && ......................except(Exception1[, Exception2[,...ExceptionN]]]):&& If there is any exception from the given exception list, && then execute this block.&& ......................else:&& If there is no exception then execute this block. 五、try-finally 语句try-finally 语句无论是否发生异常都将执行最后的代码。 代码如下:try:&语句&finally:&语句&&&& #退出try时总会执行raise注意:你可以使用except语句或者finally语句,但是两者不能同时使用。else语句也不能与finally语句同时使用
try-finally用法实例: 代码如下:#!/usr/bin/python
try:&& fh = open("testfile", "w")&& fh.write("This is my test file for exception handling!!")finally:&& print "Error: can\'t find file or read data"如果打开的文件没有可写权限,输出如下所示: 代码如下:Error: can't find file or read data同样的例子也可以写成如下方式: 代码如下:#!/usr/bin/python
try:&& fh = open("testfile", "w")&& try:&&&&& fh.write("This is my test file for exception handling!!")&& finally:&&&&& print "Going to close the file"&&&&& fh.close()except IOError:&& print "Error: can\'t find file or read data"当在try块中抛出一个异常,立即执行finally块代码。finally块中的所有语句执行后,异常被再次提出,并执行except块代码。参数的内容不同于异常。
六、异常的参数一个异常可以带上参数,可作为输出的异常信息参数。你可以通过except语句来捕获异常的参数,如下所示: 代码如下:try:&& You do && ......................except ExceptionType, Argument:&& You can print value of Argument here...变量接收的异常值通常包含在异常的语句中。在元组的表单中变量可以接收一个或者多个值。元组通常包含错误字符串,错误数字,错误位置。以下为单个异常的实例: 代码如下:#!/usr/bin/python
# Define a function here.def temp_convert(var):&& try:&&&&& return int(var)&& except ValueError, Argument:&&&&& print "The argument does not contain numbers\n", Argument
# Call above function here.temp_convert("xyz");以上程序执行结果如下: 代码如下:The argument does not contain numbersinvalid literal for int() with base 10: 'xyz'使用raise触发异常:我们可以使用raise语句自己触发异常
raise语法格式如下: 代码如下:raise [Exception [, args [, traceback]]]语句中Exception是异常的类型(例如,NameError)参数是一个异常参数值。该参数是可选的,如果不提供,异常的参数是"None"。最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。raise用法实例:一个异常可以是一个字符串,类或对象。 Python的内核提供的异常,大多数都是实例化的类,这是一个类的实例的参数。定义一个异常非常简单,如下所示: 代码如下:def functionName( level ):&& if level & 1:&&&&& raise "Invalid level!", level&&&&& # The code below to this would not be executed&&&&& # if we raise the exception注意:为了能够捕获异常,"except"语句必须有用相同的异常来抛出类对象或者字符串。例如我们捕获以上异常,"except"语句如下所示: 代码如下:try:&& Business Logic here...except "Invalid level!":&& Exception handling here...else:&& Rest of the code here...
七、用户自定义异常实例通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式。以下为与RuntimeError相关的实例,实例中创建了一个类,基类为RuntimeError,用于在异常触发时输出更多的信息。在try语句块中,用户自定义的异常后执行except块语句,变量 e 是用于创建Networkerror类的实例。 代码如下:class Networkerror(RuntimeError):&& def __init__(self, arg):&&&&& self.args = arg在你定义以上类后,你可以触发该异常,如下所示: 代码如下:try:&& raise Networkerror("Bad hostname")except Networkerror,e:&& print e.args
附:python标准异常BaseExceptiona:所有异常的基类SystemExitb python:解释器请求退出KeyboardInterruptc:用户中断执行(通常是输入^C)Exceptiond:常规错误的基类StopIteratione:迭代器没有更多的值GeneratorExita:生成器(generator)发生异常来通知退出SystemExith:Python 解释器请求退出StandardErrorg:所有的内建标准异常的基类ArithmeticErrord:所有数值计算错误的基类FloatingPointErrord:浮点计算错误OverflowError:数值运算超出最大限制ZeroDivisionError:除(或取模)零 (所有数据类型)AssertionErrord:断言语句失败AttributeError:对象没有这个属性EOFError:没有内建输入,到达EOF 标记EnvironmentErrord:操作系统错误的基类IOError:输入/输出操作失败OSErrord:操作系统错误WindowsErrorh Windows:系统调用失败ImportError:导入模块/对象失败KeyboardInterruptf:用户中断执行(通常是输入^C)LookupErrord:无效数据查询的基类IndexError:序列中没有没有此索引(index)KeyError:映射中没有这个键MemoryError:内存溢出错误(对于Python 解释器不是致命的)NameError:未声明/初始化对象 (没有属性)UnboundLocalErrorh:访问未初始化的本地变量ReferenceErrore:弱引用(Weak reference)试图访问已经垃圾回收了的对象RuntimeError:一般的运行时错误NotImplementedErrord:尚未实现的方法SyntaxError:Python 语法错误IndentationErrorg:缩进错误TabErrorg:Tab 和空格混用SystemError 一般的解释器系统错误TypeError:对类型无效的操作ValueError:传入无效的参数UnicodeErrorh:Unicode 相关的错误UnicodeDecodeErrori:Unicode 解码时的错误UnicodeEncodeErrori:Unicode 编码时错误UnicodeTranslateErrorf:Unicode 转换时错误Warningj:警告的基类DeprecationWarningj:关于被弃用的特征的警告FutureWarningi:关于构造将来语义会有改变的警告OverflowWarningk:旧的关于自动提升为长整型(long)的警告PendingDeprecationWarningi:关于特性将会被废弃的警告RuntimeWarningj:可疑的运行时行为(runtime behavior)的警告SyntaxWarningj:可疑的语法的警告UserWarningj:用户代码生成的警告
您可能感兴趣的文章:
上一篇:下一篇:
最 近 更 新
热 点 排 行
12345678910python中如何从字符串中提取数字?-中国学网-中国IT综合门户网站
> python中如何从字符串中提取数字?
python中如何从字符串中提取数字?
转载 编辑:李强
为了帮助网友解决“python中如何从字符串中提取数字?”相关的问题,中国学网通过互联网对“python中如何从字符串中提取数字?”相关的解决方案进行了整理,用户详细问题包括:82]很着急:A1,b5.82提取成.45.45,5,8比如.45.45:字符串如下,6:[1,6,8!万分感谢,具体解决方案如下:解决方案1:<解决方案2:谢谢!通过对数据库的索引,我们还为您准备了:问:有一个字符串‘speed=210,angle=150',我想提取210和150这两个数字,需要...答:import res = 'speed=210,angle=150'm = re.findall(r'(\w*[0-9]+)\w*',s)print m结果: &&& import re &&& s = 'speed=210,angle=150' &&& m = re.findall(r'(\w*[0-9]+)\w*',s) &&& print m ['210', '150'] &&& ===========================================问:比如:字符串如下:A1.45,b5,6.45,8.82 提取成:[1.45,5,6.45,8.82] ...答:import restring="A1.45,b5,6.45,8.82"print(re.findall(r"\d+\.?\d*",string))===========================================问:一个文件mbox-shout.txt中 部分内容如下: X-DSPAM-Result: Innocent X-...答:循环里做累加操作啊 if line.startswith('X-DSPAM-Confidence:'): #根据:号来分割line,取出该值,累加 total += float(line.split(':')[1]) count=count+1print countprint total/count===========================================问:实例(麻烦补充完整): for i in range(5): N=input("please enter the...答:str1="" str_list=[] for i in range(5): N=input("please enter the number:") str1+=str(N) str_list.append(str(N)) print str1 print str_list===========================================问:我现在有一个字符串str="发表于:",我想取出这里面的时间。 ...答:没分..很简单 (python2.7) s = "发表于:" # 我猜你的方法是 filter(str.isalnum,s) # result ''===========================================问:我现在有一个字符串str="发表于:",我想取出这里面的时间。 ...答:int(str) float(str) str(int) str(float)===========================================问:balance-rr 0答:&&& import re&&& str1 = 'balance-rr 0'&&& mode = re.compile(r'\d+')&&& &&& mode.findall(str1)['0']&&& str1 = '12j33jk12 ksdjfkj23jk4h1k23h'&&& mode.findall(str1)['12', '33', '12', '23', '4', '1', '23']&&&===========================================问:'1,2,3'.split(',')结果为['1', '2', '3'],我想要[1, 2, 3]答:[int(i) for i in '1,2,3'.split(',')]===========================================问:这是我修改的,但是有问题,不知道怎么改,python新手。。答:直接贴代码别人好帮你调试下,你上个截图..................唉.............................=========================================== import sys import os import re if __name__ == &#39;__main__&#39;: SEARCH_PAT = re.compile(r&#39;iops&#92;s*=&#92;s*(&#92;d+)&#39;) src_line = &#39;io=819...===========================================字符串转换为python的字典a,然后vs = a.values()这个vs里面就是所有的数字组成的list。... vs=re.findall(r&#39;&#92;d+&#39;, s) 这里前提是key中没有数字,values全部为数字=========================================== "".join([a for a in s if a.isalpha()])===========================================1) else: break f.close() 代码没有测试,仅供参考! 原理: 1、将文件按行读取出来; 2、对每行按照空格进行切分,得到一个列表; 3、取列表从第二个到最后一个元素进行...=========================================== list(a)得['1', '2', '3', '4']=========================================== 最近用python抓网页,遇到一个大问题。网页上抓来的是以普通字符串形式存在的unicode编码,例如 &#39;&#92;u56c3&#92;u67e4&#39;,而不是u&#39;&#92;u56c3&#92;u67e4...=========================================== t=&#39;&#39;&#39;Now is the time time^%$# is time-is %?"time&#39;&#39;&#39; import re a=re.findall("&#92;w+",t); d={k:a.count(k) for k in dict(zip(...============================================ {} #定义一个字典类型 fp = open('data.txt') #打开要查询的文件 for line in fp: #从fp中读... 提取打印 结果: data.txt里存有 qiang song wan qiang song qiang 执行python后打印出: ...=========================================== 如果你按照ls说的,v是一个数组,不能直接float,你要在的就是 x = map(float,v) catalogue.append(x) 还有一种方法,就是 print exec(catalogue[0][14]+'-'+catalogue[0][24]) 其...===========================================seconds = 40146.0strftime(&#39;%Y-%m-%d&#39;, localtime(seconds))得到的字符串就是你要的结果time包的localtime是把seconds转成一个解析过的时间的tuple,然...===========================================
本文欢迎转载,转载请注明:转载自中国学网: []
用户还关注
可能有帮助Python入门笔记(6):字符串-python-电脑编程网Python入门笔记(6):字符串作者:佚名 和相关&&一、Python字符串自述
每次对字符串的学习都是一个老生常谈的问题,似乎很多编程语言都强大的字符串处理功能,在Python中字符串是最常见的类型,可以通过简单的单双引号去创建它。不过Python不同于其他shell脚本,因为这些脚本语言中,通常转义字符仅仅在双引号字符串中起作用,在单引号括起的字符串中不起作用,而Python不做区分。
字符串是不可变类型,改变一个字符串元素则需要创建新的对象。
二、字符串的操作
1、创建和赋值
使用单双引号创建,或者str()工厂函数创建;对于赋值则是直接赋值。
2、访问字符串的值(字符和子串)
注意:Python里没有字符这个类型,而是用长度为1的字符串来表示这个概念,当然,这其实也是一个子串。
可以使用序列和切片进行访问
3、改变字符串
通过变量赋值或者重新赋值来改变,注意字符串是不可变类型(见上)
4、删除字符和字符串
重新强调一遍,字符串是不可变类型,Python也没有字符这个类型,所以对于删除一个字符串中的某个字符,显示苍白无力,我们只能del()删除整个字符串(内存销毁)或者使用切片重新生成一个满足条件的新字符串。
&&& s="BeginMan"
&&& a2=s[:3]+s[4:]
'BegnMan' #把i去掉
Traceback (most recent call last):
File "&pyshell#4&", line 1, in &module&
NameError: name 's' is not defined
提示:绝大部分,我们没必要显示删除字符串,还记得的内存回收机制吗?
5、比较字符串
&&& s1="abc"
&&& s2="def"
比较的时候都是按照ASCII值的大小来比较的
6、切片操作([]和[:])
在上一节:Python入门笔记(5):重要的序列中,我们对切片操作符有了大概的理解。现在看看关于字符串的切片操作。
首先我们回顾上节学的知识:
[]就不再讲解,重点学习[:],对于任何[start : end],可以访问start在内的到end(不包括end)的所有元素。下面以s=&abcd&为例子,对于默认索引这里不在列出来。如下:
正向索引:
satrt&=x&end
反向索引:
-len(s)=&x&=-1
(1).正向索引
&&& s="abcd"
&&& len(s)
&&& s[1:3]
&&& s[1:4]
&&& s[1:5]
&&& s[1:1000]
这里很奇怪,如果使用s[4]或s[1000]等超过索引范围,则会报错,但是使用[:]却么出错,或许对于,当处理一组到时候,虽然超出了,但是默认只是到end了,如果对于单个则不行。
(2).反向索引
从-1开始,到字符串长度的负数为索引的结束。
三、关于字符串的操作符
1、切片操作符
上面已经学习过
2、成员操作符(in ,not in)
注意:成员操作符用于判断一个字符或子串是否出现在另一个字符串当中,出现则返回True。
成员操作符不是用来判断一个字符串中是否包含某某的,这样的功能由find()和index()还有它们的兄弟:rfind()和rindex()函数来完成
&&& s1="abcd"
&&& s2="a"
&&& s3="bc"
&&& s2 in s1
&&& s3 in s1
&&& s2 in s3
&&& s1.find(s2)
string模块:
string模块的说明
string.uppercase-------'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
string.lowercase-------'abcdefghijklmnopqrstuvwxyz'
string.letters---------'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
string.digits----------''
字符串属性方法:
&&& str='string learn'
&&& dir(str)
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
可以将这些方法按功能用途划分为以下几种类型:
字符串格式输出对齐:
&&& str='stRINg lEArn'
&&& str.center(20)
#生成20个字符长度,str排中间
stRINg lEArn
&&& str.ljust(20)
#str左对齐
'stRINg lEArn
&&& str.rjust(20)
#str右对齐
stRINg lEArn'
&&& str.zfill(20)
#str右对齐,左边填充0
'stRINg lEArn'
大小写转换:
&&& str='stRINg lEArn'
&&& str.upper() #转大写
'STRING LEARN'
&&& str.lower() #转小写
'string learn'
&&& str.capitalize() #字符串首为大写,其余小写
'String learn'
&&& str.swapcase() #大小写对换
'STrinG LeaRN'
&&& str.title() #以分隔符为标记,首字符为大写,其余为小写
'String Learn'
字符串条件判断:
&&& str='0123'
&&& str.isalnum()
#是否全是字母和数字,并至少有一个字符
&&& str.isdigit()
#是否全是数字,并至少有一个字符
&&& str='abcd'
&&& str.isalnum()
&&& str.isalpha()
#是否全是字母,并至少有一个字符
&&& str.islower()
#是否全是小写,当全是小写和数字一起时候,也判断为True
&&& str='abcd0123'
&&& str.islower()
&&& str.isalnum()
&&& str=' '
&&& str.isspace()
#是否全是空白字符,并至少有一个字符
&&& str='ABC'
&&& str.isupper()
#是否全是大写,当全是大写和数字一起时候,也判断为True
&&& str='Abb Acc'
&&& str.istitle()
#所有单词字首都是大写,标题
&&& str='string learn'
&&& str.startswith('str') #判断字符串以'str'开头
&&& str.endswith('arn')
#判读字符串以'arn'结尾
字符串搜索定位与替换:
&&& str='string lEARn'
&&& str.find('a')
#查找字符串,没有则返回-1,有则返回查到到第一个匹配的索引
&&& str.find('n')
&&& str.rfind('n')
#同上,只是返回的索引是最后一次匹配的
&&& str.index('a')
#如果没有匹配则报错
Traceback (most recent call last):
File "&stdin&", line 1, in &module&
ValueError: substring not found
&&& str.index('n')
#同find类似,返回第一次匹配的索引值
&&& str.rindex('n')
#返回最后一次匹配的索引值
&&& str.count('a')
#字符串中匹配的次数
&&& str.count('n')
&&& str.replace('EAR','ear')
'string learn'
&&& str.replace('n','N')
'striNg lEARN'
&&& str.replace('n','N',1)
'striNg lEARn'
&&& str.strip('n')
#删除字符串首尾匹配的字符,通常用于默认删除回车符
'string lEAR'
&&& str.lstrip('n')
'string lEARn'
&&& str.rstrip('n')
'string lEAR'
&&& str.expandtabs()
#把制表符转为空格
&&& str.expandtabs(2) #指定空格数
字符串编码与解码:
&&& str='字符串学习'
'\xe5\xad\x97\xe7\xac\xa6\xe4\xb8\xb2\xe5\xad\xa6\xe4\xb9\xa0'
&&& str.decode('utf-8')
#解码过程,将utf-8解码为unicode
u'\u5b57\u7b26\u4e32\u5b66\u4e60'
&&& str.decode('utf-8').encode('gbk')
#编码过程,将unicode编码为gbk
'\xd7\xd6\xb7\xfb\xb4\xae\xd1\xa7\xcf\xb0'
&&& str.decode('utf-8').encode('utf-8')
#将unicode编码为utf-8
'\xe5\xad\x97\xe7\xac\xa6\xe4\xb8\xb2\xe5\xad\xa6\xe4\xb9\xa0'
字符串分割变换:
&&& str='Learn string'
&&& '-'.join(str)
'L-e-a-r-n- -s-t-r-i-n-g'
&&& l1=['Learn','string']
&&& '-'.join(l1)
'Learn-string'
&&& str.split('n')
['Lear', ' stri', 'g']
&&& str.split('n',1)
['Lear', ' string']
&&& str.rsplit('n',1)
['Learn stri', 'g']
&&& str.splitlines()
['Learn string']
&&& str.partition('n')
('Lear', 'n', ' string')
&&& str.rpartition('n')
('Learn stri', 'n', 'g')
参考:http://blog.chinaunix.net/uid--id-3283846.html
--------------------------------------------------------------------------------------
string 模块小测试(Python 核心编程例题): 检查标识符的合法性:代码如下:
#coding=utf-8
Created on
Function:检查输入的标识符的合法性
@author: BeginMan
import string
string模块的说明
string.uppercase-------'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
string.lowercase-------'abcdefghijklmnopqrstuvwxyz'
string.letters---------'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
string.digits----------''
letters=string.letters + "_"
#标识符首字符以字母或下划线开头
digits=string.digits
#数字的字符串表示
print u"请依照指示输入标识符"
myInput = raw_input(u"请输入标识符:")
if len(myInput)&1:
if myInput[0] not in letters:
#检查首字符
print u"标识符首字符以字母或下划线开头!"
for otherChar in myInput[1:]:
#从第二个字符起遍历循环
if otherChar not in letters + digits:
print u"标识符不合法!"
#break一定要带上
print u"通过"
elif len(myInput) == 1:
if myInput not in letters:
print u"标识符首字符以字母或下划线开头!"
print u"通过"
3.连接符:
有时候对于简单的字符串操作,不建议使用string模块,因为每次import string 都会带来内存、性能的消耗。上面例子我们完全可以定义一个字符串st="abcde....."来替代,而没有必要用string。例如下:
1 &&& s='begin'+' '+'man'
2 &&& import string
3 &&& string.upper(s[:3]+s[5:])
4 'BEG MAN'
5 ---------------------------------
6 &&& ps=' '.join(('begin','man'))
8 'begin man'
9 &&& ('%s %s' %(s[:3],s[5:])).upper()
编译时字符串连接:
Python语法运行在源码中将几个字符串连在一起写,以此来构建新字符串
&&& foo="hello"'world'
'helloworld'
把普通字符转换成unicode字符
首先弄明白什么是unicode字符,这个见/question/9280890.html,其次是转换当把一个普通字符串和一个unicode字符串连接一起时,会首先将普通字符串转换成unicode字符串。:
&&& 'hello'+u' '+'world'+u''
u'hello world'
1 #将Unicode转换成普通的Python字符串:"编码(encode)"
2 unicodestring = u"Hello world"
3 utf8string = unicodestring.encode("utf-8")
4 asciistring = unicodestring.encode("ascii")
5 isostring = unicodestring.encode("ISO-8859-1")
6 utf16string = unicodestring.encode("utf-16")
9 #将普通的Python字符串转换成Unicode: "解码(decode)"
10 plainstring1 = unicode(utf8string, "utf-8")
11 plainstring2 = unicode(asciistring, "ascii")
12 plainstring3 = unicode(isostring, "ISO-8859-1")
13 plainstring4 = unicode(utf16string, "utf-16")
相关资料:||||Python入门笔记(6):字符串来源网络,如有侵权请告知,即处理!编程Tags:                &                    

我要回帖

更多关于 python 字符串截取 的文章

 

随机推荐