基于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实现DNS正向查询、反向查询的例子
Apr 25 Python
pygame学习笔记(3):运动速率、时间、事件、文字
Apr 15 Python
Python中用函数作为返回值和实现闭包的教程
Apr 27 Python
Python中DJANGO简单测试实例
May 11 Python
python实现字符串连接的三种方法及其效率、适用场景详解
Jan 13 Python
python如何实现反向迭代
Mar 20 Python
Python/ArcPy遍历指定目录中的MDB文件方法
Oct 27 Python
利用python实现在微信群刷屏的方法
Feb 21 Python
如何用C代码给Python写扩展库(Cython)
May 17 Python
python:批量统计xml中各类目标的数量案例
Mar 10 Python
Python小白不正确的使用类变量实例
May 29 Python
Python爬虫如何破解JS加密的Cookie
Nov 19 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
PHP7.0安装笔记整理
2015/08/28 PHP
百度地图经纬度转换到腾讯地图/Google 对应的经纬度
2015/08/28 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
2016/07/06 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
PHP连续签到功能实现方法详解
2019/12/04 PHP
Javascript 继承机制实例
2009/08/12 Javascript
javascript中关于break,continue的特殊用法与介绍
2012/05/24 Javascript
javascript中interval与setTimeOut的区别示例介绍
2014/03/14 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
2015/08/25 Javascript
浅析Bootstrap验证控件的使用
2016/06/23 Javascript
玩转NODE.JS(四)-搭建简单的聊天室的代码
2016/11/11 Javascript
JS常见算法详解
2017/02/28 Javascript
vue+ElementUI实现订单页动态添加产品数据效果实例代码
2017/07/13 Javascript
简述jQuery Easyui一些用法
2017/08/01 jQuery
关于Vue的路由权限管理的示例代码
2018/03/06 Javascript
解决webpack dev-server不能匹配post请求的问题
2018/08/24 Javascript
对VUE中的对象添加属性
2018/09/18 Javascript
关于Vue中axios的封装实例详解
2019/10/20 Javascript
Vue-cli项目部署到Nginx服务器的方法
2019/11/01 Javascript
解决vant的Toast组件时提示not defined的问题
2020/11/11 Javascript
python实现矩阵乘法的方法
2015/06/28 Python
Python实现的端口扫描功能示例
2018/04/08 Python
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
2018/07/12 Python
对Python2与Python3中__bool__方法的差异详解
2018/11/01 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
2020/03/10 Python
python plt可视化——打印特殊符号和制作图例代码
2020/04/17 Python
学点简单的Django之第一个Django程序的实现
2021/02/24 Python
Vince官网:全球著名设计师品牌,休闲而优雅的服饰
2017/01/15 全球购物
美体小铺奥地利官方网站:The Body Shop奥地利
2019/04/11 全球购物
高中生评语大全
2014/04/25 职场文书
主要负责人任命书
2014/06/06 职场文书
环保小标语
2014/06/13 职场文书
2015年评职称工作总结范文
2015/04/20 职场文书
浅谈Python基础之列表那些事儿
2021/05/11 Python
MySQL8.0.18配置多主一从
2021/06/21 MySQL