本文记录了自己在对Python+高德API的代码进行解读时遇到的知识点障碍。
- 1.format()函数
- 2.csv模块
知识点一:格式化函数format()
《Python+高德API解决租房问题》中与知识点相关的代码
response = requests.get(url.format(page = page))
format()函数
从python2.6开始,新增了一种格式化字符串的函数str.format()
,它增强了字符串格式化的功能。基本语法是通过{}
和:
来代替传统的%
。
format函数可以接受无限个参数,位置可以不按顺序。
>>>"{} {}".format("hello","world") #不设置指定位置,按默认顺序
'hello world'
>>>"{0} {1}".format("hello","world") #设置指定位置
'hello world'
>>>"{1} {0} {1}".format("hello","world") #设置指定位置
'world hello world'
也可以设置参数:
#coding:utf-8
print("网站名:{name}, 地址 {url}".format(name = "Daisy's blog",url = "http://daisy.javabin.cn"))
#通过字典设置参数
site = {"name": "Daisy's blog","url": "http://daisy.javabin.cn"}
print("网站名:{name}, 地址 {url}".format(**site))
#通过列表索引设置参数
mylist = {'Daisy's blog','http://daisy.javabin.cn'}
print("网站名 :{0[0]}, 地址 {0[1]}".format(mylist)) # "0"必须存在
输出结果为:
网站名:Daisy’s blog, 地址 http://daisy.javabin.cn
网站名:Daisy’s blog, 地址 http://daisy.javabin.cn
网站名:Daisy’s blog, 地址 http://daisy.javabin.cn
知识点二:csv模块
《Python+高德API解决租房问题》中与知识点相关的代码
# 导入csv
import csv
# 以只写的方式打开rent.csv文件
csv_file = open("rent.csv","w")
# 创建writer对象,指定文件与分隔符
csv_writer = csv.writer(csv_file,delimiter=',')
#写一行数据
csv_writer.writerow([house_title,house_location,house_money,house_url])
#关闭文件
csv_file.close()
csv模块基本用法
python中的csv模块提供了一种快捷方便的方法操作csv文件,下面主要通过读写例子来进行讲解。
- 1.用csv模块完成写操作,实例如下:
headers = ['Name','Sex','Age','Score','Grade']
rows = [('xiaoming','boy',10,89,'B'),
('xiaofang','girl',8,98,'A'),
('xiaohua','girl',9,75,'C'),
('xiaolan','boy',11,100,'A'),
]
# 打开文件,用with打开文件可以不用特意关闭file
with open('report.csv','w',newline = '') as f:
# 创建写入对象
f_writer = csv.writer(f)
#写入一行数据
f_writer.writerow(headers)
#写入多行数据
f_writer.writerows(rows)
- 如果将
with open('report.csv','w',newline = '') as f:
中的'w'
换成'a'
,则会把当前数据追加到你原有csv文件的末尾而不会覆盖你的文件。而直接使用’w’会覆盖掉你原来的文件 - 参数
newline
是用来控制文本模式下,一行的结束字符。可以是None,’’,\n,\r,\r\n等等。设置newline = ''
可以保证csv写入数据不会出现空行。
- 2.用csv模块完成读操作,下面的代码示例告诉我们如何将这些数据读取为元组序列:
import csv
with open('report.csv') as f:
f_reader = csv.reader(f)
headers = next(f_reader)
data = [row for row in f_reader]
if headers:
print(headers)
print('***************************************')
for datarow in data:
print(datarow)
显示输出结果如下所示:
['Name', 'Sex', 'Age', 'Score', 'Grade']
***************************************
['xiaoming', 'boy', '10', '89', 'B']
['xiaofang', 'girl', '8', '98', 'A']
['xiaohua', 'girl', '9', '75', 'C']
['xiaolan', 'boy', '11', '100', 'A']