2016-03-01 102 views
0
from lxml import html 
import requests 
import csv 
page = requests.get('http://www.google.com/finance?q=[%28exchange+%3D%3D+%22ABC%22%29]&restype=company&noIL=1&start=0&num=1500') 
tree = html.fromstring(page.content) 

#Scrape stocks companies and symbols 

stocks = tree.xpath('//a [not(@class)][@id][@href]/text()') 
#This will create a list of prices 
stocks.remove('IRM Group Berhad'); 
stocks.remove('A & M Realty Berhad'); 
stocks.remove('BERJAYA FOOD BERHAD- A SHARES'); 


print 'Stocks= ', stocks 

# open a file for writing. 
csv_out = open('KLSE.csv', 'wb') 

mywriter = csv.writer(csv_out) 

rows = zip(stocks) 
mywriter.writerows(rows) 

csv_out.close() 

我想删除所有包含单词“Berhad”的行,因为我不想逐个删除它。任何线索如何做到这一点?Python:想删除包含特定单词的行

+0

你是什么意思“不想删除它一一”吗?为了完成任务,需要O(n)操作,所以如果不查看所有行,不可能做到这一点 –

回答

0

假设股票只是一个通常的列表,你可以尝试像

trimmed_stocks = [ x for x in stocks if not 'Berhad' in x ] 

这不是从您的文章清楚如果说,BERHAD或BERHAD应排除为好,但这些可以同样处理。

+0

,谢谢。它按预期工作。 – bkcollection

+0

在这种情况下,请接受我的答案或cjauvin's,以便StackOverflow知道问题已解决。谢谢 :) – TheBigH

1

你可以这样来做:

stocks = [s for s in stocks if 'berhad' not in s.lower()] 
相关问题