ahm*_*mad 11 python line filter
在Python,我想编写一个程序,它过滤从我的文本文件,该文件包含"苹果",写这些行成一个新的文本文件中的行.我试过的只是在我的新文本文件中写了"apple"这个词,而我想要整行.我是Python的初学者,所以请回答我的问题,因为我真的需要这个.
phy*_*nfo 20
使用可以使用list-comprehension获取包含'apple'的所有行:
[ line for line in open('textfile') if 'apple' in line]
Run Code Online (Sandbox Code Playgroud)
所以 - 也可以在一个代码行中 - 创建新的文本文件:
open('newfile','w').writelines([ line for line in open('textfile') if 'apple' in line])
Run Code Online (Sandbox Code Playgroud)
而eyquem是对的:将它作为迭代器和写入来保持它肯定更快
open('newfile','w').writelines(line for line in open('textfile') if 'apple' in line)
Run Code Online (Sandbox Code Playgroud)
eyq*_*uem 10
from itertools import ifilter
with open('source.txt','rb') as f,open('new.txt','wb') as g:
g.writelines( ifilter(lambda line: 'apple' in line, f))
Run Code Online (Sandbox Code Playgroud)
使用生成器,这是内存高效和快速
def apple_finder(file):
for line in file:
if 'apple' in line:
yield line
source = open('forest','rb')
apples = apple_finder(source)
Run Code Online (Sandbox Code Playgroud)
我喜欢简单的解决方案,没有脑损伤阅读:-)
对于Python3 - 这是有效且快速的示例
text = b'line contains text'
with open('input.txt', 'rb') as file_in:
with open('output.txt', 'wb') as file_out:
file_out.writelines(
filter(lambda line: text in line, file_in)
)
Run Code Online (Sandbox Code Playgroud)
输入.txt:
Test line contains text
Not line not contains this text
HEY
Another line contains text
Run Code Online (Sandbox Code Playgroud)
输出.txt:
Test line contains text
Another line contains text
Run Code Online (Sandbox Code Playgroud)
b'line contains text'
-我们对这种字符串进行操作的b
状态,跳过编码等方面的一些问题
。官方文档:https://docs.python.org/3/library/stdtypes.html ?highlight=binary#bytes-objectsbinary
rb
wb
- 对类似对象进行操作read
和write
操作
官方文档:https ://docs.python.org/3/library/io.html#binary-iobinary
filter()
- 需要expression
和iterable object
。返回过滤后的对象。在我们的示例中,filter
采用所有行 ( iterable object
) 并应用于每一行lambda
,告知filter
是否line
应返回给定值。
lambda
- 包含两个元素argument
:expression
. 在我们的示例中lambda
检查是否line
包含给定的text
。返回True
或检查False
后expression
。
lambda
和的示例filter
: https: //blog.finxter.com/how-to-filter-in-python-using-lambda-functions/
归档时间: |
|
查看次数: |
49070 次 |
最近记录: |