先学了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. ado.net 参数传递之 in

    之前项目有一放行的功能,对某界面维护时(数据的增删改),先将数据保存到临时表中,放行后再真正的写入到库中.由于设计到主从表多中约束关系,所以当时我采用的是写一个存储过程来对某个界面的操作进行统一处理, ...

  2. 深入浅出Hadoop之HDFS

    hadoop生态系统一直是大数据灵域的热点,其中包括今天要聊的HDFS,和计划以后想聊的yarn, mapreduce, spark, hive, hbase, 已经聊过的zookeeper,等等. ...

  3. centos yum方式安装net-snmp v3

    SNMPv3的安全报头采用用户安全模式(USM),其提供具有机密性和完整性的网络管理通信.机密性通过采用数据加密标准(DES)来提供.尽管 这一算法以脆弱性著称(由于它采用的是40位的密钥),但与明文 ...

  4. web开发过程中关于路径问题的总结

    约束: 相对路径概念-./代表当前目录.../代表上级目录 示例的所有文件都基于http://127.0.0.1:8080/test路径开放,test为对应的contextPath 前端 HTML标签 ...

  5. BZOJ 2388: 旅行规划 [分块 凸包 等差数列]

    传送门 题意: 区间加和询问一段区间内整体前缀和的最大值 刚才还在想做完这道题做一道区间加等差数列结果发现这道就是.... 唯一的不同在于前缀和一段区间加上等差数列后,区间后面也要加上一个常数!!! ...

  6. 51Nod 1225 余数之和 [整除分块]

    1225 余数之和 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  关注 F(n) = (n % 1) + (n % 2) + (n % 3) + ... ...

  7. HDU1013,1163 ,2035九余数定理 快速幂取模

    1.HDU1013求一个positive integer的digital root,即不停的求数位和,直到数位和为一位数即为数根. 一开始,以为integer嘛,指整型就行吧= =(too young ...

  8. LeetCode - 728. Self Dividing Numbers

    A self-dividing number is a number that is divisible by every digit it contains. For example, 128 is ...

  9. openvpn 客户端一键脚本安装

    #!/bin/bash dir=/etc/openvpn#file=AD00012basepath=$(cd `dirname $0`; pwd)PACKAGE_DIR="${basepat ...

  10. mysql中的coalesce用法

    在mysql中,其实有不少方法和函数是很有用的,这次介绍一个叫coalesce的,拼写十分麻烦,但其实作用是将返回传入的参数中第一个非null的值,比如    SELECT COALESCE(NULL ...