基于Python的文件类型和字符串详解


Posted in Python onDecember 21, 2017

1. Python的文件类型

1. 源代码--直接由Python解析

vi 1.py 
#!/usr/bin/python
print 'hello world'

这里的1.py就是源代码

执行方式和shell脚本类似:

chmod +x 后,./1.py
Python 1.py

2. 字节代码

Python源码文件经编译后生成的扩展名为pyc的文件

编译方法:

[root@t1 py]# cat 2.py 
#!/usr/bin/python
import py_compile 
py_compile.compile('1.py')

写一个2.py脚本,执行,界面没有输出,但是看下文件列表,多了一个1.pyc

[root@t1 py]# python 2.py 
[root@t1 py]# ll
总用量 12
-rw-r--r-- 1 root root 38 12月 20 21:06 1.py
-rw-r--r-- 1 root root 112 12月 20 21:10 1.pyc
-rw-r--r-- 1 root root 66 12月 20 21:09 2.py

怎么执行?还是python 2.py。

而且,如果源码文件1.py不在了,2.py照样可以执行

3. 优化代码

经过优化的源码文件,扩展名为pyo

python ?O ?m py_compile 1.py

[root@t1 py]# python -O -m py_compile 1.py
[root@t1 py]# ls
1.py 1.pyc 1.pyo 2.py

执行优化代码后,生成1.pyo。执行1.pyo

[root@t1 py]# python 1.pyo
hello world

2.python的变量

变量是计算机内存中的一块区域,变量可以存储规定范围内的值,而且值可以改变。

Python下变量是对一个数据的引用

变量的命名
变量名由字母、数字、下划线组成。
变量不能以数字开头
不可以使用关键字
a a1 _a
变量的赋值
是变量的声明和定义的过程
a = 1
id(a) #id显示a在内存的位置号

In [1]: a = 123
In [2]: id(a)
Out[2]: 25933904
In [3]: a = 456 
In [4]: id(a)
Out[4]: 33594056
In [5]: x = 'abc'
In [6]: x = abc 
---------------------------------------------------------------------------
NameError                 Traceback (most recent call last)
<ipython-input-6-c455442c5ffd> in <module>()
----> 1 x = abc
NameError: name 'abc' is not defined

上面报错的解释,默认情况下:

数字直接写表示数字  
数字带引号表示字符串  
字符带引号表示字符串 
字符不带引号表示变量

Python不需要事先声明变量的类型,自动判断

In [7]: a = 456
In [8]: type(a)
Out[8]: int

type查出a的变量类型是整数int

In [9]: a = '456'
In [10]: type(a)
Out[10]: str

type查出a的变量类型是字符串str

Python运算符包括

1.赋值运算符

=:   x = 3,  y = ‘abcd'   #等于
+=:  x += 2   #x=x+2
-=:  x -= 2   #x=x-2
*=:  x *= 2   #x=x*2
/=:  x /= 2   #x=x/2
%=:  x %= 2   #取余数

2.算术运算符

+
-
*
/
//
%
**

举例1:

In [20]: a = 1 ;b = 2
In [21]: a+b
Out[21]: 3
In [22]: 'a' + 'b'
Out[22]: 'ab'

ab赋值后,a+b是数字。直接加两个字符就是合在一起的字符串

举例2:

In [24]: 4 / 3
Out[24]: 1
In [25]: 4.0 / 3
Out[25]: 1.3333333333333333

4直接除3,因为默认是整数,所以结果取整数1

要想得到小数,将4变成浮点数4.0

特别的,//表示强制取整

In [26]: 4.0 // 3
Out[26]: 1.0

举例3:

In [27]: 2 ** 3
Out[27]: 8
In [28]: 2 * 3
Out[28]: 6

一个*是乘,两个**是幂

3.关系运算符

> :  1 > 2
< :  2 < 3
>=:  1 >= 1
<=:  2 <= 2
==:  2 == 2
!=:  1 != 2
In [33]: 1 > 2
Out[33]: False
In [34]: 1 < 2
Out[34]: True

成立就是true,不成立false

4.逻辑运算符

and逻辑与: True and False
or逻辑或: False or True
not逻辑非: not True

举例:

In [35]: 1 < 2 and 1 >2
Out[35]: False
In [36]: 1 < 2 or 1 >2
Out[36]: True
In [37]: not 1 > 2
Out[37]: True

运算优先顺序:

基于Python的文件类型和字符串详解

input和raw_input

input适合数字,raw_input适合字符

In [41]: input("input num:")
input num:123
Out[41]: 123
In [42]: input("input num:")
input num:abc
---------------------------------------------------------------------------
NameError                 Traceback (most recent call last)
<ipython-input-42-3cd60768312e> in <module>()
----> 1 input("input num:")
<string> in <module>()
NameError: name 'abc' is not defined
In [43]: input("input num:")
input num:'abc'
Out[43]: 'abc'
In [44]: raw_input("input num:")
input num:abc
Out[44]: 'abc'

有上面可以看出在input下面,直接输入abc报错,但是raw_input正常显示。

由此可以写一个计算脚本

[root@t1 py]# cat cal.py

!/sur/bin/python

num1 = input("please input a num :")

num2 = input("please input a num :")

print "%s + %s = %s" % (num1,num2,num1+num2)

print "%s - %s = %s" % (num1,num2,num1-num2)

print "%s * %s = %s" % (num1,num2,num1*num2)

print "%s / %s = %s" % (num1,num2,num1/num2)

%s分别对应后面的数值 
执行脚本

[root@t1 py]# python cal.py
please input a num :5
please input a num :6
5 + 6 = 11
5 - 6 = -1
5 * 6 = 30
5 / 6 = 0

### 3.Python的数值和字符串
数值类型:  
- [ ] 整形int 
整型int可以存储2^32个数字,范围-2,147,483,648到2147483647 
  例如:0,100,-100
- [ ] 长整型long 
Long的范围很大,几乎可以说任意大的整数均可以存储。 
为了区分普通整型,需要在整数后加L或l。  
例如: 2345L,0x34al 

- [ ] 浮点float 
例如:0.0,12.0,-18.8,3e+7等
- [ ] 复数型complex 
Python对复数提供内嵌支持,这是其他大部分软件所没有的。 
复数例子:- 3.14j,8.32e-36j 
  
- [ ] 字符串 string   
有三种方法定义字符串类型
  - str = ‘this is a string' #普通字符串
  - str = “this is a string” #能够解析\n等特殊字符
  - str = ‘'‘this is a string'‘' #可以略去\n 
三重引号(docstring)除了能定义字符串还可以用作注释。 
举例:

In [3]: a = '''hello
...: world'''

In [4]: a
Out[4]: 'hello\nworld'

In [5]: print a
hello
world

- 字符串索引,0开始,-1表示最后一个,-2倒数第二个,类推

In [6]: a = 'abcde'

In [7]: a[0:2]
Out[7]: 'ab'

a[]表示取索引指定的字符,[0:2]可以类比数学中的0<=a<2,即0<=a<=1,就是取第一个和第二个,不包括第三个

In [8]: a[:2]
Out[8]: 'ab'

In [9]: a[:]
Out[9]: 'abcde'

0或者-1可以省略 
- 字符串切片

In [11]: a[0:3:2]
Out[11]: 'ac'

只取a和c,首先应该是a[0:3],但是这样的结果是abc,a[0:3:2]的2表示步进2个,跳过b。同理,如果是a[0:3:3]表示步进3。  
**如果要将整个字符串倒过来,需要用-1

In [17]: a[::-1]
Out[17]: 'edcba'

可以类比下面的

In [16]: a[:-1]
Out[16]: 'abcd'

来个更加直观的

In [13]: a[-2:-4:-1]
Out[13]: 'dc'

取倒数第2个和倒数第三个,而且倒序显示

### 4.作业

将 “123” 转换成整数
将 “9999999999999999999” 转换成长整数
将 “3.1415926” 转换成一个浮点数
将 123 转换成一个字符串
现有以下字符串
字符串1:" abc deFGh&ijkl opq mnrst((uvwxyz "
字符串2:" ABC#DEF GH%IJ MNOPQ KLRS&&TUVWX(&YZ "
使用字符串的各种方法转换成如下方式
ABCDEFGHIJKLMNOPQRSTUVWXYZzyxwvutsrqponmlkjihgfedcba

解答: 
1.将 “123” 转换成整数

num = int(123)
print num

2.将 “9999999999999999999” 转换成长整数

num = long(9999999999999999999)
print num

3.将 “3.1415926” 转换成一个浮点数

num = float(3.1415926)
print num

4.将 123 转换成一个字符串

num = str(123)
print num

5.最后一题 
分析思路:两个字符串都要剔除首尾空格,特殊字符,转换大小写,切片,相加 
- [ ] 剔除首尾空格,特殊字符

str1 = " abc deFGh&ijkl opq mnrst((uvwxyz "
str2 = " ABC#DEF GH%IJ MNOPQ KLRS&&TUVWX(&YZ "
str1 = str1.strip()
str2 = str2.strip()
print str1
print str2

strip()剔除首尾分隔符,默认是空格,可以自定义,自定义用'XX'例子见图示   
![](http://os9ep64t2.bkt.clouddn.com/17-12-20/90753838.jpg) 
执行结果

C:\Users\chawn\PycharmProjects\171220\venv\Scripts\python.exe C:/Users/chawn/.PyCharmCE2017.3/config/scratches/scratch.py
abc deFGh&ijkl opq mnrst((uvwxyz
ABC#DEF GH%IJ MNOPQ KLRS&&TUVWX(&YZ

还可以用替换来剔除空格、其他字符

str1 = " abc deFGh&ijkl opq mnrst((uvwxyz "
str2 = " ABC#DEF GH%IJ MNOPQ KLRS&&TUVWX(&YZ "
str1 = str1.replace(' ','').replace('&','').replace('((','')
str2 = str2.replace(' ','').replace('#','').replace('%','').replace('&&','').replace('(&','')

print str1
print str2

replace可以替换任意位置的空格,还有字符 
- [ ] 大小写转换+切片

str1 = " abc deFGh&ijkl opq mnrst((uvwxyz "
str2 = " ABC#DEF GH%IJ MNOPQ KLRS&&TUVWX(&YZ "
str1 = str1.replace(' ','').replace('&','').replace('((','')
str2 = str2.replace(' ','').replace('#','').replace('%','').replace('&&','').replace('(&','')
str1 = str1.lower()
str1 = str1[0:12]+str1[15:17]+str1[12:15]+str1[17:]
str2 = str2[0:10]+str2[10:15]+str2[15:17]+str2[17:]
print str2 + str1[::-1]

执行结果

C:\Users\chawn\PycharmProjects\171220\venv\Scripts\python.exe C:/Users/chawn/.PyCharmCE2017.3/config/scratches/scratch.py
ABCDEFGHIJMNOPQKLRSTUVWXYZzyxwvutsrqponmlkjihgfedcba

以上这篇基于Python的文件类型和字符串详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的Numeric包和Numarray包使用教程
Apr 13 Python
python网络编程之文件下载实例分析
May 20 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
Aug 18 Python
Python利用turtle库绘制彩虹代码示例
Dec 20 Python
python放大图片和画方格实现算法
Mar 30 Python
pandas DataFrame 根据多列的值做判断,生成新的列值实例
May 18 Python
kafka-python 获取topic lag值方式
Dec 23 Python
Python3的socket使用方法详解
Feb 18 Python
Python MySQL 日期时间格式化作为参数的操作
Mar 02 Python
python 已知三条边求三角形的角度案例
Apr 12 Python
Python使用random模块实现掷骰子游戏的示例代码
Apr 29 Python
68行Python代码实现带难度升级的贪吃蛇
Jan 18 Python
Python绘制七段数码管实例代码
Dec 20 #Python
python代码实现ID3决策树算法
Dec 20 #Python
python决策树之CART分类回归树详解
Dec 20 #Python
python中文乱码不着急,先看懂字节和字符
Dec 20 #Python
python决策树之C4.5算法详解
Dec 20 #Python
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
Dec 20 #Python
python实现ID3决策树算法
Dec 20 #Python
You might like
用PHP编写PDF文档生成器
2006/10/09 PHP
采用memcache在web集群中实现session的同步会话
2014/07/05 PHP
PHP中IP地址与整型数字互相转换详解
2014/08/20 PHP
用showModalDialog弹出页面后,提交表单总是弹出一个新窗口
2009/07/18 Javascript
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
javascript 构造函数强制调用经验总结
2012/12/02 Javascript
深入理解jQuery之事件移除
2016/06/02 Javascript
jQuery中$.ajax()方法参数解析
2016/10/22 Javascript
通过jsonp获取json数据实现AJAX跨域请求
2017/01/22 Javascript
vue父子组件的嵌套的示例代码
2017/09/08 Javascript
微信小程序使用for循环动态渲染页面操作示例
2018/12/25 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
jquery将json转为数据字典的实例代码
2019/10/11 jQuery
Vue项目打包部署到iis服务器的配置方法
2019/10/14 Javascript
jQuery实现轮播图效果demo
2020/01/11 jQuery
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
微信小程序地图实现展示线路
2020/07/29 Javascript
vant 时间选择器--开始时间和结束时间实例
2020/11/04 Javascript
vue项目实现减少app.js和vender.js的体积操作
2020/11/12 Javascript
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
将Python的Django框架与认证系统整合的方法
2015/07/24 Python
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
2016/01/20 Python
Python 类与元类的深度挖掘 I【经验】
2016/05/06 Python
python常见排序算法基础教程
2017/04/13 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
Python3 shutil(高级文件操作模块)实例用法总结
2020/02/19 Python
python环境下安装opencv库的方法
2020/03/05 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
2020/05/10 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
法学毕业生自我鉴定
2013/11/08 职场文书
教师专业理论水平的自我评价分享
2013/11/09 职场文书
汉字听写大会观后感
2015/06/12 职场文书
高中团支书竞选稿
2015/11/21 职场文书
浅谈由position属性引申的css进阶讨论
2021/05/25 HTML / CSS
简单谈谈Python面向对象的相关知识
2021/06/28 Python