python学习笔记.docx

上传人:b****5 文档编号:8277216 上传时间:2023-01-30 格式:DOCX 页数:11 大小:21.79KB
下载 相关 举报
python学习笔记.docx_第1页
第1页 / 共11页
python学习笔记.docx_第2页
第2页 / 共11页
python学习笔记.docx_第3页
第3页 / 共11页
python学习笔记.docx_第4页
第4页 / 共11页
python学习笔记.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

python学习笔记.docx

《python学习笔记.docx》由会员分享,可在线阅读,更多相关《python学习笔记.docx(11页珍藏版)》请在冰豆网上搜索。

python学习笔记.docx

python学习笔记

1)Pythonlstrip()方法用于截掉字符串左边的空格或指定字符。

2)Pythonstrip()方法用于移除字符串头尾指定的字符(默认为空格)。

3)Pythonendswith()方法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。

可选参数"start"与"end"为检索字符串的开始与结束位置。

4)str.endswith(suffix[,start[,end]])

5)不需要用split啊,split是分割

用replace(src,des)#des为需要替换成的目标字串,src为需要替换的源字串

如:

>>>str="Mynameisxxx,andyours?

..."

>>>printstr

Mynameisxxx,andyours?

...

>>>str=str.replace(',','')

>>>printstr

Mynameisxxxandyours?

...

6)list.append(obj)

arr=[[1,2],[3,4],[5,6]]

∙1

∙取第一列的值

v=[x[0]forxinarr]

>>>a=[[1,2,3],[4,5,6]]

>>>a[0]#取一行

[1,2,3]

>>>a[:

0]#尝试用数组的方法读取一列失败

TypeError:

listindicesmustbeintegersorslices,nottuple

∙1

∙2

∙3

∙4

∙5

​我们需要用列表解析的方法读取一列:

>>>b=[x[0]forxina]

>>>print(b)

[1,4]

 而对于数组,可以直接读取:

>>>importnumpyasnp

>>>a=np.array([[1,2,3],[4,5,6]])

>>>a[:

0]

array([1,4])

pop()函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

语法

pop()方法语法:

list.pop(obj=list[-1])

参数

∙obj--可选参数,要移除列表元素的对象。

返回值

该方法返回从列表中移除的元素对象。

实例

以下实例展示了pop()函数的使用方法:

#!

/usr/bin/python

aList=[123,'xyz','zara','abc'];

print"AList:

",aList.pop();

print"BList:

",aList.pop

(2);

以上实例输出结果如下:

AList:

abc

BList:

zara

python判断字符串是否为空用什么方法?

s=''

ifs.strip()=='':

print'sisnull'

或者

ifnots.strip():

print'sisnull'

这是从网上搜索的一篇也的还可以的Python进制转换,经过验证可以使用。

下面贴出它的实现代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

#!

/usr/bin/envpython

#-*-coding:

utf-8-*-

#2/10/16basetrans.wrotebysrcdogon20th,April,2009

#ldelementsinbase2,10,16.

  

importos,sys

  

#globaldefinition

#base=[0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F]

base=[str(x)forxinrange(10)]+[chr(x)forxinrange(ord('A'),ord('A')+6)]

  

#bin2dec

#二进制to十进制:

int(str,n=10) 

defbin2dec(string_num):

  returnstr(int(string_num,2))

  

#hex2dec

#十六进制to十进制

defhex2dec(string_num):

  returnstr(int(string_num.upper(),16))

  

#dec2bin

#十进制to二进制:

bin() 

defdec2bin(string_num):

  num=int(string_num)

  mid=[]

  whileTrue:

    ifnum==0:

break

    num,rem=divmod(num,2)

    mid.append(base[rem])

  

  return''.join([str(x)forxinmid[:

:

-1]])

  

#dec2hex

#十进制to八进制:

oct() 

#十进制to十六进制:

hex() 

defdec2hex(string_num):

  num=int(string_num)

  mid=[]

  whileTrue:

    ifnum==0:

break

    num,rem=divmod(num,16)

    mid.append(base[rem])

  

  return''.join([str(x)forxinmid[:

:

-1]])

  

#hex2tobin

#十六进制to二进制:

bin(int(str,16)) 

defhex2bin(string_num):

  returndec2bin(hex2dec(string_num.upper()))

  

#bin2hex

#二进制to十六进制:

hex(int(str,2)) 

defbin2hex(string_num):

  returndec2hex(bin2dec(string_num))

在Python中怎么同时循环索引和元素

阿751凡达 | 浏览204次 |举报

我有更好的答案

2017-02-12

最佳答案

试试这个方法:

>>>data

[100,94,88,82,76,70,64,58,52,46,40,34]

>>>data.index(76)

python文件读写小结

读文件

打开一个文件用open()方法(open()返回一个文件对象,它是可迭代的):

>>>f=open('test.txt','r')

r表示是文本文件,rb是二进制文件。

(这个mode参数默认值就是r)

如果文件不存在,open()函数就会抛出一个IOError的错误,并且给出错误码和详细的信息告诉你文件不存在:

>>>f=open('test.txt','r')

Traceback(mostrecentcalllast):

File"",line1,in

FileNotFoundError:

[Errno2]Nosuchfileordirectory:

'test.txt'

文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的

>>>f.close()

由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。

所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try...finally来实现:

try:

f=open('/path/to/file','r')

print(f.read())

finally:

iff:

f.close()

但是每次都这么写实在太繁琐,所以,Python引入了with语句来自动帮我们调用close()方法:

withopen('/path/to/file','r')asf:

print(f.read())

python文件对象提供了三个“读”方法:

read()、readline()和readlines()。

每种方法可以接受一个变量以限制每次读取的数据量。

∙read()每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。

如果文件大于可用内存,为了保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。

∙readlines()之间的差异是后者一次读取整个文件,象.read()一样。

.readlines()自动将文件内容分析成一个行的列表,该列表可以由Python的for...in...结构进行处理。

∙readline()每次只读取一行,通常比readlines()慢得多。

仅当没有足够内存可以一次读取整个文件时,才应该使用readline()。

注意:

这三种方法是把每行末尾的'\n'也读进来了,它并不会默认的把'\n'去掉,需要我们手动去掉。

In[2]:

withopen('test1.txt','r')asf1:

list1=f1.readlines()

In[3]:

list1

Out[3]:

['111\n','222\n','333\n','444\n','555\n','666\n']

去掉'\n'

In[4]:

withopen('test1.txt','r')asf1:

list1=f1.readlines()

foriinrange(0,len(list1)):

list1[i]=list1[i].rstrip('\n')

In[5]:

list1

Out[5]:

['111','222','333','444','555','666']

对于read()和readline()也是把'\n'读入了,但是print的时候可以正常显示(因为print里的'\n'被认为是换行的意思)

In[7]:

withopen('test1.txt','r')asf1:

list1=f1.read()

In[8]:

list1

Out[8]:

'111\n222\n333\n444\n555\n666\n'

In[9]:

print(list1)

111

222

333

444

555

666

In[10]:

withopen('test1.txt','r')asf1:

list1=f1.readline()

In[11]:

list1

Out[11]:

'111\n'

In[12]:

print(list1)

111

一个python面试题的例子:

有两个文件,每个都有很多行ip地址,求出两个文件中相同的ip地址:

#coding:

utf-8

importbisect

withopen('test1.txt','r')asf1:

list1=f1.readlines()

foriinrange(0,len(list1)):

list1[i]=list1[i].strip('\n')

withopen('test2.txt','r')asf2:

list2=f2.readlines()

foriinrange(0,len(list2)):

list2[i]=list2[i].strip('\n')

list2.sort()

length_2=len(list2)

same_data=[]

foriinlist1:

pos=bisect.bisect_left(list2,i)

ifpos

same_data.append(i)

same_data=list(set(same_data))

print(same_data)

要点就是:

(1)用with

(2)处理行末的'\n'(3)使用二分查找提高算法效率。

(4)使用set快速去重。

 

写文件

写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符'w'或者'wb'表示写文本文件或写二进制文件:

>>>f=open('test.txt','w')#若是'wb'就表示写二进制文件

>>>f.write('Hello,world!

')

>>>f.close()

注意:

'w'这个模式是酱紫:

如果没有这个文件,就创建一个;如果有,那么就会先把原文件的内容清空再写入新的东西。

所以若不想清空原来的内容而是直接在后面追加新的内容,就用'a'这个模式。

我们可以反复调用write()来写入文件,但是务必要调用f.close()来关闭文件。

当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。

只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。

忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。

所以,还是用with语句来得保险:

withopen('test.txt','w')asf:

f.write('Hello,world!

')

python文件对象提供了两个“写”方法:

write() 和writelines()。

∙write()方法和read()、readline()方法对应,是将字符串写入到文件中。

∙writelines()方法和readlines()方法对应,也是针对列表的操作。

它接收一个字符串列表作为参数,将他们写入到文件中,换行符不会自动的加入,因此,需要显式的加入换行符。

f1=open('test1.txt','w')

f1.writelines(["1","2","3"])

#此时test1.txt的内容为:

123

f1=open('test1.txt','w')

f1.writelines(["1\n","2\n","3\n"])

#此时test1.txt的内容为:

#1

#2

#3

 

关于open()的mode参数:

'r':

'w':

'a':

追加

'r+'==r+w(可读可写,文件若不存在就报错(IOError))

'w+'==w+r(可读可写,文件若不存在就创建)

'a+'==a+r(可追加可写,文件若不存在就创建)

对应的,如果是二进制文件,就都加一个b就好啦:

'rb'  'wb'  'ab'  'rb+'  'wb+'  'ab+'

 

file_obj.seek(offset,whence=0)

file_obj.seek(offset,whence=0)方法用来在文件中移动文件指针。

offset表示偏移多少。

可选参数whence表示从哪里开始偏移,默认是0为文件开头,1为当前位置,2为文件尾部。

举例:

f=open("test1.txt","a+")

print(f.read())

f.write('1')

f.seek(0,0)#把文件指针从末尾移到开头,没有这句话下面的read()就读不到正确的东西

print(f.read())

f.close()

注意:

这个文件指针的改变只是作用于'r',对'w'和'a'不会起作用,如果是'w',那么write()永远都是从开头写(会覆盖后面对应位置的内容),是'a'的话write()就永远都是从最后开始追加。

字符编码

要读取非UTF-8编码的文本文件,需要给open()函数传入encoding参数,例如,读取GBK编码的文件:

>>>f=open('test.txt','r',encoding='gbk')

>>>f.read()

'测试'

遇到有些编码不规范的文件,你可能会遇到UnicodeDecodeError,因为在文本文件中可能夹杂了一些非法编码的字符。

遇到这种情况,open()函数还接收一个errors参数,表示如果遇到编码错误后如何处理。

最简单的方式是直接忽略:

>>>f=open('test.txt','r',encoding='gbk',errors='ignore')

Pythonint与string之间的转化

string-->int

1、10进制string转化为int

  int('12')

2、16进制string转化为int

  int('12',16)

int-->string

1、int转化为10进制string

  str(18)

2、int转化为16进制string

  hex(18)

考虑,为什么没有16进制int转化为string,可以这么认为不管什么进制,python在内部表示都是10进制,先转化为10进制在进行。

如16进制int转化为string,str(0x12),首先变为str(18),再到'18'。

那么我想结果为'12',怎么办?

这其实就是10进制int转化为string,即hex(0x12)。

(0,6).format(“string”)格式化字符串

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1