朋友们,如需转载请标明出处:https://blog.csdn.net/jiangjunshow
声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!PS:看不懂本篇文章的同学请先看前面的文章,循序渐进每天学一点就不会觉得难了!
下面这个例子将把多种Python对象写入到文本文件中。需要注意的是,我们必须使用转换工具把这些对象转成字符串。
>>> X,Y,Z = 43,44,45 # Native Python objects
>>> S = 'Spam' # Must be strings to store in file
>>> D = {'a': 1,'b': 2}
>>> L = [1,2,3]
>>>
>>> F = open('datafile.txt','w') # Create output file
>>> F.write(S + '\n') # Terminate lines with
>>> F.write('%s,%s,%s\n' % (X,Y,Z)) # Convert numbers to strings
>>> F.write(str(L) + '$' + str(D) + '\n') # Convert and separate with $
>>> F.close()
下面直接读取文件中的字符串并显示出来:
>>> chars = open('datafile.txt').read() # Raw string display
>>> chars
"Spam\n43,44,45\n[1,2,3]${'a': 1,'b': 2}\n"
>>> print(chars) # User-friendly display
Spam
43,44,45
[1,2,3]${'a': 1,'b': 2}
因为Python不会自动把字符串转换为数字或其他类型的对象,所以我们得使用其他转换工具把文本文件中的字符串转换成各种所需的Python对象。
>>> F = open('datafile.txt') # Open again
>>> line = F.readline() # Read one line
>>> line
'Spam\n'
>>> line.rstrip() # Remove end-of-line
'Spam'
上面我们使用字符串rstrip方法去掉了多余的行终止符;line[:-1]分片也可以,但是只有确定所有行都含有“\n”的时候才行(文件中最后一行有时候会没有行终止符)。
>>> line = F.readline() # Next line from file
>>> line # It's a string here
'43,44,45\n'
>>> parts = line.split(',') # Split (parse) on commas
>>> parts
['43','44','45\n']
上面我们使用了字符串split方法,从逗号分隔符的地方将整行断开,得到的结果就是含有个别数字的子字符串列表。如果我们想对这些数字做数学运算那么就要还得把字符串转换为整数:
>>> int(parts[1]) # Convert from string to int
44
>>> numbers = [int(P) for P in parts] # Convert all in list at once
>>> numbers
[43,44,45]
int能够把数字字符串转换为整数对象。列表解析表达式可以一次性对列表中的每个项使用调用。注意:我们不一定非要运行rstrip来删除最后部分的“\n”,int和一些其他转换方法会忽略数字旁边的空白。
最后,我们来转换文件第三行所储存的列表和字典,我们可以使用eval这一内置函数。
>>> line = F.readline()
>>> line
"[1,2,3]${'a': 1,'b': 2}\n"
>>> parts = line.split('$')# Split (parse) on $
>>> parts
['[1,2,3]',"{'a': 1,'b': 2}\n"]
>>> eval(parts[0]) # Convert to any object type
[1,2,3]
>>> objects = [eval(P) for P in parts] # Do same for all in list
>>> objects
[[1,2,3],{'a': 1,'b': 2}]