<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<atom:link href="http://itecfun.com/extern.php?action=feed&amp;tid=3185&amp;type=rss" rel="self" type="application/rss+xml" />
		<title><![CDATA[个人知识管理站 / Python 字符串操作]]></title>
		<link>http://www.itecfun.com/viewtopic.php?id=3185</link>
		<description><![CDATA[Python 字符串操作 最近发表的帖子。]]></description>
		<lastBuildDate>Fri, 03 Jul 2015 06:16:53 +0000</lastBuildDate>
		<generator>FluxBB</generator>
		<item>
			<title><![CDATA[Python 字符串操作]]></title>
			<link>http://www.itecfun.com/viewtopic.php?pid=3355#p3355</link>
			<description><![CDATA[<p><strong>介绍字符串相关的：比较,截取,替换,长度,连接,反转,编码,格式化,查找,复制,大小写,分割等操作</strong></p><p>字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 s=“a1a2···an”(n&gt;=0)。它是编程语言中表示文本的数据类型。 通常以串的整体作为操作对象，如：在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是：长度相等，并且各个对应位置上的字符都相等。<br />python 字符串相关特性<br />1 属于python基本数据类型和结构的一种。2 本身是不可变的数据类型。 3 有很多内置的方法<br /><strong>字符串连接</strong><br />方法1： 用字符串的join方法<br />a = [&#039;a&#039;,&#039;b&#039;,&#039;c&#039;,&#039;d&#039;]<br />content = &#039;&#039;<br />content = &#039;&#039;.join(a)<br />print content<br />方法2： 用字符串的替换占位符替换<br />a = [&#039;a&#039;,&#039;b&#039;,&#039;c&#039;,&#039;d&#039;]<br />content = &#039;&#039;<br />content = &#039;%s%s%s%s&#039; % tuple(a)<br />print content<br />想要了解更多,请看python字符串连接<br /><strong>字符串截取</strong><br />我们可以通过索引来提取想要获取的字符，可以把python的字符串也做为字符串的列表就更好理解</p><p>python的字串列表有2种取值顺序<br />1是从左到右索引默认0开始的，最大范围是字符串长度少1<br />s = &#039;ilovepython&#039;<br />s[0]的结果是i</p><p>2是从右到左索引默认-1开始的，最大范围是字符串开头<br />s = &#039;ilovepython&#039;<br />s[-1]的结果是n</p><p>上面这个是取得一个字符，如果你的实际要取得一段子串的话，可以用到变量[头下标:尾下标]，就可以截取相应的字符串，其中下标是从0开始算起，可以是正数或负数，下标可以为空表示取到头或尾。</p><p>比如<br />s = &#039;ilovepython&#039;<br />s[1:5]的结果是love<br />当使用以冒号分隔的字符串，python返回一个新的对象，结果包含了以这对偏移标识的连续的内容，左边的开始是包含了下边界，比如<br />上面的结果包含了s[1]的值l，而取到的最大范围不包括上边界，就是s[5]的值p</p><p>想要了解更多,请看python字符串截取<br /><strong>字符串替换</strong><br />字符串替换可以用内置的方法和正则表达式完成。<br />1用字符串本身的replace方法:<br />a = &#039;hello word&#039;<br />b = a.replace(&#039;word&#039;,&#039;python&#039;)<br />print b<br />2用正则表达式来完成替换:<br />import re<br />a = &#039;hello word&#039;<br />strinfo = re.compile(&#039;word&#039;)<br />b = strinfo.sub(&#039;python&#039;,a)<br />print b<br />想要了解更多,请看python 字符串替换<br /><strong>字符串比较</strong><br />cmp方法比较两个对象，并根据结果返回一个整数。cmp(x,y)如果X&lt; Y,返回值是负数 如果X&gt;Y 返回的值为正数。<br />sStr1 = &#039;strch&#039;<br />sStr2 = &#039;strchr&#039;<br />print cmp(sStr1,sStr2)##-1<br />字符串相加<br />我们通过操作符号+来进行字符串的相加，不过建议还是用其他的方式来进行字符串的拼接，这样效率高点。<br />原因：在循环连接字符串的时候，他每次连接一次，就要重新开辟空间，然后把字符串连接起来，再放入新的空间，再一次循环，又要开辟新的空间，把字符串连接起来放入新的空间，如此反复，内存操作比较频繁，每次都要计算内存空间，然后开辟内存空间，再释放内存空间，效率非常低。<br />sStr1 = &#039;strch&#039;<br />sStr2 = &#039;strchr&#039;<br />newstr = sStr1 + sStr2<br />print newstr<br /><strong>字符串查找</strong><br />python 字符串查找有4个方法，1 find,2 index方法，3 rfind方法,4 rindex方法。<br /><strong>1 find()方法：</strong><br />info = &#039;abca&#039;<br />print info.find(&#039;a&#039;)##从下标0开始，查找在字符串里第一个出现的子串，返回结果：0</p><p>info = &#039;abca&#039;<br />print info.find(&#039;a&#039;,1)##从下标1开始，查找在字符串里第一个出现的子串：返回结果3</p><p>info = &#039;abca&#039;<br />print info.find(&#039;333&#039;)##返回-1,查找不到返回-1<br /><strong>2 index()方法：</strong><br />python 的index方法是在字符串里查找子串第一次出现的位置，类似字符串的find方法，不过比find方法更好的是，如果查找不到子串，会抛出异常，而不是返回-1<br />info = &#039;abca&#039;<br />print info.index(&#039;a&#039;)<br />print info.index(&#039;33&#039;)<br /><strong>字符串分割</strong><br />字符串分割，可以用split,rsplit方法，通过相应的规则来切割成生成列表对象<br />info = &#039;name:haha,age:20$name:python,age:30$name:fef,age:55&#039;<br />content = info.split(&#039;$&#039;)<br />print content<br /><strong>字符串翻转</strong><br />通过步进反转[::-1]<br />a = &#039;abcd&#039;<br />b = a[::-1]##[::-1]通过步进反转<br />print b<br /><strong>字符串编码</strong><br />通过字符串的decode和encode方法<br /><strong>1 encode([encoding,[errors]]) </strong><br />#其中encoding可以有多种值，比如gb2312 gbk gb18030 bz2 zlib big5 bzse64等都支持。errors默认值为&quot;strict&quot;，意思是UnicodeError。可能的值还有&#039;ignore&#039;, &#039;replace&#039;, &#039;xmlcharrefreplace&#039;, &#039;backslashreplace&#039; 和所有的通过codecs.register_error注册的值。<br />S.decode([encoding,[errors]]) 下面是字符串编码应用:<br />a = &#039;你好&#039;<br />b = &#039;python&#039;<br />print a.decode(&#039;utf-8&#039;).encode(&#039;gbk&#039;)##decode方法把字符串转换为unicode对象，然后通过encode方法转换为指定的编码字符串对象<br />print b.decode(&#039;utf-8&#039;)##decode方法把字符串转换为unicode对象<br /><strong>字符串追加和拼接</strong><br />通过字符串的占位符来进行字符串的拼接<br /><strong>#1 元组拼接</strong><br />m = &#039;python&#039;<br />astr = &#039;i love %s&#039; % m<br />print astr</p><p><strong>#2 字符串的format方法</strong><br />m = &#039;python&#039;<br />astr = &quot;i love {python}&quot;.format(python=m)<br />print astr</p><p><strong>#3 字典格式化字符串</strong><br />m = &#039;python&#039;<br />astr = &quot;i love %(python)s &quot; % {&#039;python&#039;:m}<br />print astr<br /><strong>字符串复制</strong><br />通过变量来进行赋值<br />fstr = &#039;strcpy&#039;<br />sstr = fstr<br />fstr = &#039;strcpy2&#039;<br />print sstr<br /><strong>字符串长度</strong><br />通过内置方法len()来计算字符串的长度，注意这个计算的是字符的长度。<br />aa = &#039;afebb&#039;<br />bb = &#039;你&#039;<br />print len(aa)<br />print len(bb)<br /><strong>字符串大小写</strong><br />通过下面的upper(),lower()等方法来转换大小写<br />S.upper()#S中的字母大写 <br />S.lower() #S中的字母小写 <br />S.capitalize() #首字母大写 <br />S.istitle() #S是否是首字母大写的 <br />S.isupper() #S中的字母是否便是大写 <br />S.islower() #S中的字母是否全是小写 <br /><strong>字符串去空格</strong><br />通过strip(),lstrip(),rstrip()方法去除字符串的空格<br />S.strip()去掉字符串的左右空格<br />S.lstrip()去掉字符串的左边空格<br />S.rstrip()去掉字符串的右边空格<br /><strong>字符串其他方法</strong><br />字符串相关的其他方法:count(),join()方法等。<br />S.center(width, [fillchar]) #中间对齐<br />S.count(substr, [start, [end]]) #计算substr在S中出现的次数<br />S.expandtabs([tabsize]) #把S中的tab字符替换没空格，每个tab替换为tabsize个空格，默认是8个 <br />S.isalnum() #是否全是字母和数字，并至少有一个字符 <br />S.isalpha() #是否全是字母，并至少有一个字符 <br />S.isspace() #是否全是空白字符，并至少有一个字符<br />S.join()#S中的join，把列表生成一个字符串对象<br />S.ljust(width,[fillchar]) #输出width个字符，S左对齐，不足部分用fillchar填充，默认的为空格。<br />S.rjust(width,[fillchar]) #右对齐 <br />S.splitlines([keepends]) #把S按照行分割符分为一个list，keepends是一个bool值，如果为真每行后而会保留行分割符。<br />S.swapcase() #大小写互换</p>]]></description>
			<author><![CDATA[dummy@example.com (xuyg)]]></author>
			<pubDate>Fri, 03 Jul 2015 06:16:53 +0000</pubDate>
			<guid>http://www.itecfun.com/viewtopic.php?pid=3355#p3355</guid>
		</item>
	</channel>
</rss>
