先学了R,最近刚刚上手python,所以想着将python和R结合起来互相对比来更好理解python。最好就是一句python,对应写一句R。

pandas可谓如雷贯耳,数据处理神器。

以下符号:

=R=

代表着在R中代码是怎么样的。

————————————————————————————————————————————

字符编码

encode 和 decode

Python2 默认的编码是 ascii,通过 encode 可以将对象的编码转换为指定编码格式(称作“编码”),而 decode 是这个过程的逆过程(称作“解码”)。

decode,将字节串转变为字符串,并且这个字符串是按照
unicode 编码的。在 unicode 编码中,一个汉字对应一个字符,这时候度量它的长度就是 1.

encode,一个 unicode 编码的字符串,也可以转换为字节串。

>>> a = "中"
>>> a
'\xe4\xb8\xad'

>>> b = a.decode()
>>> b
u'\u4e2d'

其中,a就是ASCII格式的编码,字节串;b就是unicode编码的字符串。当然有一个问题就是最后出来的还不是汉字。。。(醉!)

————————————————————————————————————————————

一、字符形成、展示、拼接、切片

1、字符形成=R=paste

双引号包裹单引号

>>> "What's your name?"
"What's your name?"

单引号使用转义符

>>> 'What\'s your name?'
"What's your name?"

2、字符串展示print /raw_input

>>> name = raw_input("input your name:")
input your name:python
>>> name
'python'

其中raw_input有点交互关系,具体看案例,直接键入name就可以获得你输入的内容。

>>> print("hello, world")
hello, world

3、字符切片、选择、截取 =R=无

字符可以像一般的数据格式一样进行切片选择,有点像series:

>>> lang = "study Python"
>>> lang[0]
's'
>>> lang[2:9]
'udy pyt'

当然也包括lang[:]可以选中所有的。

其中index代表着某个字符的索引值。

lang.index("p")

4、内存编号 =R= 无

这个与R中不一样,当数据存入python之后,机器会自动给存入内存的数据编号,这个编号可以用id来查看。

>>> id(c)
3071934536L
>>> id(lang)
3071934536L

5、ASCII 值(是十进制的)

ord("a")   代表输入字符返回ASCII值

cha(97)  代表输入ASCII值返回字符

>>> cmp("a","b")    #a-->97, b-->98, 97 小于 98,所以 a 小于 b
-1

其中cmp()代表比较 a  b 两个字符的ASCII值的大小,返回值为1,0,-1

>>> max(str1)
'd'
>>> max(str2)
'e'
>>> min(str1)
'a'

返回字符的ASCII值的最大值。

————————————————————————————————————————————

二、字符串基本操作

1、字符串重复 =R=rep

>>> str1*3
'abcdabcdabcd'

其中变成字符串有两种方式:一种是str()或者是用单引号来表示。

2、字符串拼接

(1)+ 号 =R= paste

>>> "Py" + "thon"
'Python'

>>> a = 1989
>>> b = "free"

>>> print b+“a”
>>> print b+str(a)

其中变成字符串有两种方式:一种是str()或者是用单引号来表示。

乘法,就是重复那个字符串的含义。

(2)join =R= paste

['www', 'itdiffer', 'com']
>>> ".".join(c)
'www.itdiffer.com'

用 .  来填补间隔中的内容。

3、语句分割split =R= split

这个函数的作用是将字符串根据某个分割符进行分割。

>>> a = "I LOVE PYTHON"
>>> a.split(" ")
['I', 'LOVE', 'PYTHON']

其中split(“ ”)括号中,代表着依据什么样式来进行分割。

4、字符串去掉空格 = R=grep

方法是:

  • S.strip() 去掉字符串的左右空格
  • S.lstrip() 去掉字符串的左边空格
  • S.rstrip() 去掉字符串的右边空格
>>> b=" hello "    # 两边有空格
>>> b.strip()
'hello'

5、字符串大小写

在 Python 中有下面一堆内建函数,用来实现各种类型的大小写转化

  • S.upper() #S 中的字母大写
  • S.lower() #S 中的字母小写
  • S.capitalize() # 首字母大写
  • S.isupper() #S 中的字母是否全是大写
  • S.islower() #S 中的字母是否全是小写
  • S.istitle()

S.title()  #把所有的单词的第一个字母转化为大写

S.istitle()  #判断每个单词的第一个字母是否为大写

6、in 包含关系 =R=%in%

类似集合计算,a in b代表a是否包含在b中,返回的是布尔值。

>>> "a" in str1
True
>>> "de" in str1
False
>>> "de" in str2
True

7、字符长度len  =R= length

>>> a="hello"
>>> len(a)
5

————————————————————————————————————————————

三、转义符、占用符列表

1、转义符列表

在字符串中,有时需要输入一些特殊的符号,但是,某些符号不能直接输出,就需要用转义符。所谓转义,就是不采用符号本来的含义,而采用另外一含义了。下面表格中列出常用的转义符:

转义字符 描述
\ (在行尾时) 续行符
\ 反斜杠符号
\' 单引号
\" 双引号
\a 响铃
\b 退格(Backspace)
\e 转义
\000
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\oyy 八进制数,yy 代表的字符,例如:\o12 代表换行
\xyy 十六进制数,yy 代表的字符,例如:\x0a 代表换行
\other 其它的字符以普通格式输出

以上所有转义符,都可以通过交互模式下 print 来测试一下,感受实际上是什么样子的。

2、占位符

占位符在自动生成字符内容方面有很好的应用:

>>> print "我%s喜欢NLP" % "非常"
我非常喜欢NLP

(1)老式占位符%s

另外,不同的占位符,会表示那个位置应该被不同类型的对象填充。下面列出许多,供参考。不过,不用记忆,常用的只有 %s 和 %d,或者再加上 %f,其它的如果需要了,到这里来查即可。

占位符 说明
%s 字符串(采用 str()的显示)
%r 字符串(采用 repr()的显示)
%c 单个字符
%b 二进制整数
%d 十进制整数
%i 十进制整数
%o 八进制整数
%x 十六进制整数
%e 指数 (基底写为 e)
%E 指数 (基底写为 E)
%f 浮点数
%F 浮点数,与上相同
%g 指数(e) 或浮点数 (根据显示长度)
%G 指数(E)或浮点数 (根据显示长度)

(2)新式{}

>>> print "我{}喜欢NLP" .format("非常")
我非常喜欢NLP

Python 非常提倡的 string.format()的格式化方法,其中 {} 作为占位符。

这种方法真的是非常好,而且非常简单,只需要将对应的东西,按照顺序在 format 后面的括号中排列好,分别对应占位符 {} 即可。我喜欢的方法。

————————————————————————————————————————————

四、Python 中如何避免中文是乱码

这个问题是一个具有很强操作性的问题。我这里有一个经验总结,分享一下,供参考:

首先,提倡使用 utf-8 编码方案,因为它跨平台不错。

经验一:在开头声明:

# -*- coding: utf-8 -*-

有朋友问我-*-有什么作用,那个就是为了好看,爱美之心人皆有,更何况程序员?当然,也可以写成:

# coding:utf-8

经验二:遇到字符(节)串,立刻转化为 unicode,不要用 str(),直接使用 unicode()

unicode_str = unicode('中文', encoding='utf-8')
print unicode_str.encode('utf-8')

经验三:如果对文件操作,打开文件的时候,最好用 codecs.open,替代 open(这个后面会讲到,先放在这里)

import codecs
codecs.open('filename', encoding='utf8')

大多来源于:极客学院的《从零开始学
Python》(第二版)

一句python,一句R︱python中的字符串操作、中文乱码的更多相关文章

  1. 一句python,一句R︱python中的字符串操作、中文乱码、NaN情况

    一句python,一句R︱python中的字符串操作.中文乱码.NaN情况 先学了R,最近刚刚上手Python,所以想着将python和R结合起来互相对比来更好理解python.最好就是一句pytho ...

  2. Python中的字符串操作总结(Python3.6.1版本)

    Python中的字符串操作(Python3.6.1版本) (1)切片操作: str1="hello world!" str1[1:3] <=> 'el'(左闭右开:即是 ...

  3. Oracle中有关字符串操作的语法

    Oracle中有关字符串操作的语法 Oracle提供了丰富的字符串函数 lpad()函数 lpad()函数用于左补全字符串.在某些情况下,预期的字符串为固定长度,而且格式统一,此时可以考虑使用lpad ...

  4. 处理SecureCRT中使用vim出现中文乱码问题

    处理SecureCRT中使用vim出现中文乱码问题 引用原文:http://blog.chinaunix.net/uid-20639775-id-3475608.html因为cat没有问题,定位是vi ...

  5. 在Servlet中出现一个输出中文乱码的问题(已经解)。

    在Servlet中出现一个输出中文乱码的问题,已经解. @Override public void doPost(HttpServletRequest reqeust, HttpServletResp ...

  6. PHP连接sqlserver的两种方法,向sqlserver2000中写入数据,中文乱码

    项目环境是php5.3.28 项目用的ThinkPHP3.2.3  已经mysql5.5数据库,要和另一个项目对接,需要连接sqlsever2000数据库进行一些操作. 第一种用php自带扩展连接数据 ...

  7. SQL点滴33—SQL中的字符串操作

    原文:SQL点滴33-SQL中的字符串操作 计算字符串长度len()用来计算字符串的长度 select sname ,len(sname) from student 字符串转换为大.小写lower() ...

  8. Windows下Git Bash中VIM打开文件中文乱码

    Windows下Git Bash中VIM打开文件中文乱码,解决方法是: 步骤一 admin@DESKTOP-O99620V MINGW64 /d/项目GGE/Hard_for_GGE (master) ...

  9. oracle中imp导入数据中文乱码问题(转)

    (转自  http://blog.chinaunix.net/uid-186064-id-2823338.html) oracle中imp导入数据中文乱码问题 用imp命令向oracle中导入数据后, ...

  10. 解决docker容器中Centos7系统的中文乱码

    解决docker容器中Centos7系统的中文乱码问题有如下两种方案: 第一种只能临时解决中文乱码: 在命令行中执行如下命令: # localedef -i zh_CN -f UTF-8 zh_CN. ...

随机推荐

  1. Node.js--安装express以及创建第一个express项目(windows)

    1.根据新版的express出现了安装器的概念,安装express需要两个步骤(命令行找到nodejs目录全局安装): (1)npm install -g express@4.15.0   (也可省略 ...

  2. 关于int main( int argc, char *argv[] )

    int main(int argc, char *argv[], char *env[]) 1. int argc 表示你在命令行下输入命令的时候,一共有多少个参数. 2. char *argv[] ...

  3. MySQL数据库中实现对中文字段按照首字字母排序

    转载自网络! 1. 在MySQL中,我们经常会对一个字段进行排序查询,但进行中文排序和查找的时候,对汉字的排序和查找结果往往都是错误的. 这种情况在MySQL的很多版本中都存在. 如果这个问题不解决, ...

  4. bootstrap---treeview使用方法

    1.html部分: <div id="tree"></div> 2.css设置展开/收缩按钮图片: .tree_arrows_down:before{ co ...

  5. iOS-Wonderful 完美颜色库

    开发中颜色的使用也是非常频繁的,这里推荐一个dsxNiubility大牛写的颜色库:Wonderful:它的好用就是很清楚的把每个常用的颜色进行了由浅到深的分层,让我们使用时可以根据自己对颜色的深浅直 ...

  6. Linux下查看CPU、内存和硬盘信息命令

    一.查看cpu信息 cat /proc/cpuinfo 相同physical id 的记录是属于同一个CPU的,对应于多核的信息. 二.查看内存的信息 cat /proc/meminfo 三.查看硬盘 ...

  7. BZOJ 1180: [CROATIAN2009]OTOCI [LCT]

    1180: [CROATIAN2009]OTOCI Time Limit: 50 Sec  Memory Limit: 162 MBSubmit: 961  Solved: 594[Submit][S ...

  8. 【解决问题】SSH连不上Ubuntu虚拟机解决办法

    1. 安装openssh-client Ubuntu默认缺省安装了openssh-client,apt-get安装即可 sudo apt-get install openssh-client 2. 安 ...

  9. Android app性能测试小结(7个性能指标)

    1.性能测试的几个指标:       2.性能测试环境准备: 3.启动时间 3.1,监控值的获取方法 启动分为冷启动和热启动,冷启动:应用程序首次启动,进程首次创建并加载资源的过程:热启动:应用程序启 ...

  10. vue.js 与iview官网

    vue.js https://cn.vuejs.org/v2/guide/instance.html#生命周期图示 iview https://www.iviewui.com/components/t ...