先学了R,最近刚刚上手python,所以想着将python和R结合起来互相对比来更好理解python。最好就是一句python,对应写一句R。
pandas可谓如雷贯耳,数据处理神器。
以下符号:
=R=
代表着在R中代码是怎么样的。
速查笔记:
代码语言:javascript复制string模块,还提供了很多方法,如
S.find(substring, [start [,end]]) #可指范围查找子串,返回索引值,否则返回-1
S.rfind(substring,[start [,end]]) #反向查找
S.index(substring,[start [,end]]) #同find,只是找不到产生ValueError异常
S.rindex(substring,[start [,end]])#同上反向查找
S.count(substring,[start [,end]]) #返回找到子串的个数
S.lowercase()
S.capitalize() #首字母大写
S.lower() #转小写
S.upper() #转大写
S.swapcase() #大小写互换
S.split(str, ' ') #将string转list,以空格切分
S.join(list, ' ') #将list转string,以空格连接
处理字符串的内置函数
len(str) #串长度
cmp("my friend", str) #字符串比较。第一个大,返回1
max('abcxyz') #寻找字符串中最大的字符
min('abcxyz') #寻找字符串中最小的字符
string的转换
float(str) #变成浮点数,float("1e-1") 结果为0.1
int(str) #变成整型, int("12") 结果为12
int(str,base) #变成base进制整型数,int("11",2) 结果为2
long(str) #变成长整型,
long(str,base) #变成base进制长整型,
————————————————————————————————————————————
字符编码
encode 和 decode
Python2 默认的编码是 ascii,通过 encode 可以将对象的编码转换为指定编码格式(称作“编码”),而 decode 是这个过程的逆过程(称作“解码”)。
decode,将字节串转变为字符串,并且这个字符串是按照 unicode 编码的。在 unicode 编码中,一个汉字对应一个字符,这时候度量它的长度就是 1. encode,一个 unicode 编码的字符串,也可以转换为字节串。
代码语言:javascript复制>>> a = "中"
>>> a
'xe4xb8xad'
>>> b = a.decode()
>>> b
u'u4e2d'
其中,a就是ASCII格式的编码,字节串;b就是unicode编码的字符串。当然有一个问题就是最后出来的还不是汉字。。。(醉!)
在py2中print的时候,把‘\u6838\u7535\u5360’这类,unicode格式,转化为中文变得可视化:
代码语言:javascript复制str = 'u82f1u8bedu8001u5e08'
tran = str.decode('unicode-escape')
pritn(tran)
#英语老师
————————————————————————————————————————————
一、字符形成、展示、拼接、切片
1、字符形成=R=paste
双引号包裹单引号
代码语言:javascript复制>>> "What's your name?"
"What's your name?"
单引号使用转义符
代码语言:javascript复制>>> 'What's your name?'
"What's your name?"
2、字符串展示print /raw_input
代码语言:javascript复制>>> name = raw_input("input your name:")
input your name:python
>>> name
'python'
其中raw_input有点交互关系,具体看案例,直接键入name就可以获得你输入的内容。
代码语言:javascript复制>>> print("hello, world")
hello, world
3、字符切片、选择、截取 =R=无
字符可以像一般的数据格式一样进行切片选择,有点像series:
代码语言:javascript复制>>> lang = "study Python"
>>> lang[0]
's'
>>> lang[2:9]
'udy pyt'
当然也包括lang[:]可以选中所有的。
其中index代表着某个字符的索引值。
代码语言:javascript复制lang.index("p")
4、内存编号 =R= 无
这个与R中不一样,当数据存入python之后,机器会自动给存入内存的数据编号,这个编号可以用id来查看。
代码语言:javascript复制>>> id(c)
3071934536L
>>> id(lang)
3071934536L
5、ASCII 值(是十进制的)
ord("a") 代表输入字符返回ASCII值
cha(97) 代表输入ASCII值返回字符
代码语言:javascript复制>>> cmp("a","b") #a-->97, b-->98, 97 小于 98,所以 a 小于 b
-1
其中cmp()代表比较 a b 两个字符的ASCII值的大小,返回值为1,0,-1
代码语言:javascript复制>>> max(str1)
'd'
>>> max(str2)
'e'
>>> min(str1)
'a'
返回字符的ASCII值的最大值。
————————————————————————————————————————————
二、字符串基本操作
1、字符串重复 =R=rep
代码语言:javascript复制>>> str1*3
'abcdabcdabcd'
其中变成字符串有两种方式:一种是str()或者是用单引号来表示。
2、字符串拼接
方式一:单个字符相连用 就可以;
方式二:list组内相连,可以用join;
方式三:list与list相连,可以用zip。
方式四:占位符,“%s”字符串格式化的方式
方式五:.format()
(1)加号 =R= paste
代码语言:javascript复制>>> "Py" "thon"
'Python'
>>> a = 1989
>>> b = "free"
>>> print b “a”
>>> print b str(a)
其中变成字符串有两种方式:一种是str()或者是用单引号来表示。 乘法,就是重复那个字符串的含义。
(2)join =R= paste
代码语言:javascript复制['www', 'itdiffer', 'com']
>>> ".".join(c)
'www.itdiffer.com'
用 . 来填补间隔中的内容。
(3)其他
代码语言:javascript复制#字符串连接
#两两单字符相连
sStr1 = 'strcat'
sStr2 = 'append'
sStr1 = sStr2 #sStr1改变了
sStr1 sStr2
代码语言:javascript复制#list中相连
delimiter = ','
mylist = ['Brazil', 'Russia', 'India', 'China']
print delimiter.join(mylist)
>>>Brazil,Russia,India,China
其中这里,’,’.join(mylist),书写格式是,把”,”这个符号,加到mylist这些list之间,连接起来。
代码语言:javascript复制#list字符贴在一起
name=('jack','beginman','sony','pcky')
age=(2001,2003,2005,2000)
for a,n in zip(name,age):
print a,n
代码语言:javascript复制#list list相连
>>> z1=[1,2,3]
>>> z2=[4,5,6]
>>> result=zip(z1,z2)
>>> result
[(1, 4), (2, 5), (3, 6)]
代码语言:javascript复制#占位符
#“%s”字符串格式化的方式,%s当占位符在前面的字符串中占一个位置,后面用百分号%来连接需要填进去的对象。
print 'Running solvers for %d iterations...' % niter
%d——表示那个位置是整数,%s——表示那个位置应该是字符串。
代码语言:javascript复制#.format()
'{}{}{}'.format(a,b,c)
#当{}里面是空的时候,里面默认索引为0,1,2按format括号里的顺序依次填入。
'{1}{2}{0}'.format(a,b,c)
#当{}里面有索引值时,按前面的索引值将后面的每项依次填入。
'{n1}{n2}{n3}'.format(n1=a,n2=b,n3=c)
#大括号{}里面可以指定对象名称,后面通过赋值的方式给前面的相应的值,后面的对象是无序的。
3、字符的交集
代码语言:javascript复制sStr1 = '12345678'
sStr2 = '456'
sStr1 and sStr2
跟set有点像,就可以得到字符级别的交集是什么
4、翻转字符
代码语言:javascript复制#翻转字符
sStr1 = 'abcdefg'
sStr1 = sStr1[::-1]
5、字符替换
Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
代码语言:javascript复制#!/usr/bin/python
str = "this is string example....wow!!! this is really string";
print str.replace("is", "was");
print str.replace("is", "was", 3);
以上实例输出结果如下:
代码语言:javascript复制thwas was string example....wow!!! thwas was really string
thwas was string example....wow!!! thwas is really string
6、语句分割split =R= split
这个函数的作用是将字符串根据某个分割符进行分割。
代码语言:javascript复制>>> a = "I LOVE PYTHON"
>>> a.split(" ")
['I', 'LOVE', 'PYTHON']
其中split(“ ”)括号中,代表着依据什么样式来进行分割。
7、字符串去掉空格 = R=grep
方法是:
- S.strip() 去掉字符串的左右空格
- S.lstrip() 去掉字符串的左边空格
- S.rstrip() 去掉字符串的右边空格
>>> b=" hello " # 两边有空格
>>> b.strip()
'hello'
8、字符串大小写
在 Python 中有下面一堆内建函数,用来实现各种类型的大小写转化
- S.upper() #S 中的字母大写
- S.lower() #S 中的字母小写
- S.capitalize() # 首字母大写
- S.isupper() #S 中的字母是否全是大写
- S.islower() #S 中的字母是否全是小写
- S.istitle()
S.title() #把所有的单词的第一个字母转化为大写
S.istitle() #判断每个单词的第一个字母是否为大写
9、in 包含关系 =R=%in%
类似集合计算,a in b代表a是否包含在b中,返回的是布尔值。
代码语言:javascript复制>>> "a" in str1
True
>>> "de" in str1
False
>>> "de" in str2
True
10、字符长度len =R= length
代码语言:javascript复制>>> a="hello"
>>> len(a)
5
——————————————————————————————
三、ZIP的用法
1、zip字符贴在一起
代码语言:javascript复制#Zip
#list字符贴在一起
name=('jack','beginman','sony','pcky')
age=(2001,2003,2005,2000)
for a,n in zip(name,age):
print a,n
- 1
- 2
- 3
- 4
- 5
- 6
2、list相连
代码语言:javascript复制#list list相连
1 >>> z1=[1,2,3]
2 >>> z2=[4,5,6]
3 >>> result=zip(z1,z2)
4 >>> result
5 [(1, 4), (2, 5), (3, 6)]
- 1
- 2
- 3
- 4
- 5
- 6
3、zip将数据变成list
代码语言:javascript复制#zip(*)解压,将[]变为{}
x=[1,2,3]
y=['a','b','c']
result=zip(x,y)
zip(*result) #直接转置
zip(*zip(x,y)) #接触转置
map(list,zip(x,y) ) #变成list
————————————————————————————————————————————
四、转义符、占用符列表
1、转义符列表
在字符串中,有时需要输入一些特殊的符号,但是,某些符号不能直接输出,就需要用转义符。所谓转义,就是不采用符号本来的含义,而采用另外一含义了。下面表格中列出常用的转义符:
转义字符 | 描述 |
---|---|
(在行尾时) 续行符 | |
反斜杠符号 | |
' | 单引号 |
" | 双引号 |
a | 响铃 |
b | 退格(Backspace) |
e | 转义 |