1. Python中向文件中写入内容的时候如果想每写一个就输入一个回车,做法是:f.write(str + ‘\n‘)。\n 是要加引号的,写入的时候unix系统会直接写\n, win系统会自动替换为\r\n。如果在此处写入’\r\n’,则windows上这里相当于回车加上再空一行。
2. 在windows操作系统上一定要注意’\’才是转义字符,’/’是除,’//’是取余。
3. Python中range()的三个参数分别是起始元素,终止值,步长。但是终止值是不包括在里面的。这个返回的是一个列表,是一个可迭代对象。
4. 使用lxml这个库的时候lxml.etree.parse和lxml.etree.HTML都是返回一个ElementTree Object(节点树对象)。Parse方法是从文件流对象中生成,HTML是从字符串对象中生成。然后使用xpath方法进行解析。使用parse和xpath方法的时候,有中文时可能会有乱码现象,这是因为使用HTMLParser生成解析器对象的时候没有设置好encoding=’utf-8’。
5. 简单地讲,yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator,调用 fab(5) 不会执行 fab 函数,而是返回一个 iterable 对象!在 for 循环执行时,每次循环都会执行 fab 函数内部的代码,执行到 yield b 时,fab 函数就返回一个迭代值,下次迭代时,代码从 yield b 的下一条语句继续执行,而函数的本地变量看起来和上次中断执行前是完全一样的,于是函数继续执行,直到再次遇到 yield。一个带有 yield 的函数就是一个 generator,它和普通函数不同,生成一个 generator 看起来像函数调用,但不会执行任何函数代码,直到对其调用 next()(在 for 循环中会自动调用 next())才开始执行。虽然执行流程仍按函数的流程执行,但每执行到一个 yield 语句就会中断,并返回一个迭代值,下次执行时从 yield 的下一个语句继续执行。看起来就好像一个函数在正常执行的过程中被 yield 中断了数次,每次中断都会通过 yield 返回当前的迭代值。另一个 yield 的例子来源于文件读取。如果直接对文件对象调用 read() 方法,会导致不可预测的内存占用。好的方法是利用固定长度的缓冲区来不断读取文件内容。通过 yield,我们不再需要编写读文件的迭代类,就可以轻松实现文件读取。
原文地址:https://www.cnblogs.com/nanjingli/p/8575929.html