python:字符串

  • 字符串是由字符组成的序列(sequnence),所以它是有序的。
可以用括号运算符-[ ]-中括号来访问元素,与c/c++一样,但是matlab访问元素的符号是小括号-().
括号中的表达式叫做索引(index),和c/c++一样,索引是从0开始的。因为 索引表示的是从字符串七点开始的位移量(offset)。当然,索引值都是整数,否则会出错。
TypeError: string indices must be integers

  • 获取最后一个字符
len不是字符串的方法,而是一个内建函数,这一点请注意。
使用len,可以轻松得到字符串中最后一个字符
letter=word(len(word)-1)#但是记得减一,原因如上所述
或者使用负索引
last=word[-1]#返回最后一个字符,-2表示返回倒数第二个字符
使用负索引的时候,从-1到第一个字符,则索引的绝对值正好是从1到 字符串的长度。其实这个就比较好理解了。


  • 遍历的话,既可以用while 也可以用for,for比较好用。

  • 字符串切片(slice):切片表示的都是复制
切片指的就是字符串的一个片段,所以选择一个切片的操作类似选择一个字符:

[n:m]操作符返回从第n个字符到第m个字符的字符串片段,(请注意这里的第几个,是从0开始算的)包括第一个,但是不包括最后一个。 这个行为违反直觉,但是将指向两个字符之间的索引, 想象成 下图那样或许有帮助。

图8-1:切片索引

由于不包括最后一个,但是又由于计数从0开始。所以一个切片【n:m】一共切了m-n个字符。如果第一个索引大于或等于第二个,结果是空字符(empty string)。
【:】表示赋值所有。
另外字符串切片可以接受制定步长的第三个索引
步长为-1就是从单词的尾部开始进行,所以切片[::-1]就会生成一个倒叙的字符串。这一点很有用啊。
>>> fruit = 'banana'
>>> fruit[0:5:2]
'bnn'
>>> 'word'[::-1]
'drow'

  • 字符串是不可变的
所以你不能用索引和赋值语句进行修改。这意味着你不能改变一个已经存在的字符串,你最多只能创建一个新的字符串,在原有字符串的基础上略有不同。
word='hi girlfriend!'
word[4]='v'

TypeError: 'str' object does not support item assignment

  • 搜索(search):
遍历一个序列并在找到寻找的东西时返回,使用return语句,找到了就打破循环,马上返回。稍加改变就可以变为计数器。

word = 'banana'
count = 0
for letter in word:
    if letter == 'a':
        count = count + 1
print(count)

  • 字符串方法

方法和函数类似,接受实参并且返回一个值,但是语法不同,
.upper()
>>> word = 'banana'
>>> new_word = word.upper()
>>> new_word
'BANANA'
.lower()

使用的不是函数语法  upper(word)  , 而是方法的语法  word.upper()  。返回一个都是大写字母的新字符串。用点标记的形式支出方法的名字。空括号表示不接受实参
.find('~')
>>> word = 'banana'
>>> index = word.find('a')
>>> index
1

>>> word.find('na')
2


find不仅可以查找单个字符,还可以查找子串;find默认从字符串的首字母开始查找,他还可以接受第二个参数,即从何处开始搜索,当然这是一个可选的参数,相对应也可以接受第三个参数,表示结束查找的索引位置。
.count
bytes. count ( sub [start [end ] ] ) bytearray. count ( sub [start [end ] ] )

Return the number of non-overlapping occurrences of subsequence sub in the range [startend]. Optional arguments start and end are interpreted as in slice notation.

'www.baidu.com'.count('w')
3

The subsequence to search for may be any bytes-like object or an integer in the range 0 to 255.

Changed in version 3.3: Also accept an integer in the range 0 to 255 as the subsequence.

.strip---去掉头尾指定的字符串

strip()方法语法:

str.strip([chars]);
  • chars -- 移除字符串头尾指定的字符。

返回移除字符串头尾指定的字符生成的新字符串。



.split---分隔

split()方法语法:

str.split(str="", num=string.count(str)).
  • str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
  • num -- 分割次数。

返回分割后的字符串列表。



.replace
bytes. replace ( oldnew [count ] ) bytearray. replace ( oldnew [count ] )

Return a copy of the sequence with all occurrences of subsequence oldreplaced by new. If the optional argument count is given, only the first count occurrences are replaced.

The subsequence to search for and its replacement may be any bytes-like object.

Note

 

The bytearray version of this method does not operate in place - it always produces a new object, even if no changes were made.



  • in运算符
单词in是一个布尔运算符,接受两个字符串,如果第一个作为子串出现在第二个中,则返回True
>>> 'a' in 'banana'
True
>>> 'seed' in 'banana'
False

  • 字符串比较
关系运算符也适用于字符串。
== 检查两个字符串是否相等

'apple'<'banada'
True
'banada'<'apple'
False
'Banada'<'apple'
True
< 、>对于按字母顺序放置单词也很有用。另外请注意,python处理大小写的方式和人是不同的,所有的大写字母出现在所有小写字母之前。

  • 文字游戏
open是一个内建函数,接受一个文件名作为形参,并且返回一个文件对象(file object),文件对象代表打开文件的变量。
>>> fin = open('words.txt')

fin是输入文件对象的一个常用名。该文件对象提供了几个读取方法, 包括 readline ,其从文件中读取字符直到碰到新行,并将结果作为字符串返回:

>>> fin.readline()
'aa\r\n'

此文件对象跟踪它在文件中的位置, 所以如果你再次调用readline,你获得下一个单词:

>>> fin.readline()
'aah\r\n'

你也可以将文件对象用做for循环的一部分。 此程序读取 words.txt 并打印每个单词,每行一个:

fin = open('words.txt')
for line in fin:
    word = line.strip()#strip是字符串方法,去掉空格
    print(word)








































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值