2010-03-04 31 views
-1

现在它设置为写入文件,但我希望它将值输出到一个变量。不知道如何。如何使这个变量的结果?

from BeautifulSoup import BeautifulSoup 
import sys, re, urllib2 
import codecs 


woof1 = urllib2.urlopen('someurl').read() 
woof_1 = BeautifulSoup(woof1) 
woof2 = urllib2.urlopen('someurl').read() 
woof_2 = BeautifulSoup(woof2) 

GE_DB = open('GE_DB.txt', 'a') 

for row in woof_1.findAll("tr", { "class" : "row_b" }): 
    for col in row.findAll(re.compile('td')): 
    GE_DB.write(col.string if col.string else '') 
GE_DB.write(" ") 
GE_DB.write("\n") 
GE_DB.close() 
for row in woof_2.findAll("tr", { "class" : "row_b" }): 
    for col in row.findAll(re.compile('td')): 
    GE_DB.write(col.string if col.string else '') 
GE_DB.write("\n") 
GE_DB.close() 
+2

这将有助于大大如果您解释(1)你知道什么是“输出值给一个变量”来表示,并一旦这样完成的(2)你的脚本将用做“变量” - 刚刚落在脚本的末尾似乎没有值得第1步的努力。 – 2010-03-04 23:50:59

+0

好吧,所以当你在一个表上运行上述脚本。它需要td标签之间的内容。我希望它将该值作为变量存储。 – Pevo 2010-03-04 23:53:21

+5

质量-1票是怎么回事? – 2010-03-05 00:17:25

回答

-1
values = [] 
for row in woof_1.findAll("tr", { "class" : "row_b" }): 
    for col in row.findAll(re.compile('td')): 
    if col.string: 
     values.append(col.string) 
result = ''.join(values) 
+0

我收到|的无效语法如果(col.string)| )不知道为什么。 = /我做了什么? – Pevo 2010-03-04 23:49:51

+0

@Pevo,对不起,我在if语句后错过了冒号。更正它。 – Li0liQ 2010-03-04 23:54:17

+0

您的记者省略了一个必要的':',但包含多余的'('和')';-) – 2010-03-04 23:56:04

-1

也许是这样的。

gedb = ""; 
for row in woof_1.findAll("tr", { "class" : "row_b" }): 
    for col in row.findAll(re.compile('td')): 
    if col.string: 
     gedb += col.string 

+0

为什么我的投票低?任何反馈赞赏! – 2010-03-05 02:28:03

+0

像这样的字符串连接通常在Python中被忽略。建立一个字符串列表然后“加入”它们(或者,如果OP希望继续使用类似文件的对象,使用'StringIO'),效果会更好(风格和效率)。有关更多信息,请参阅http://wiki.python.org/moin/PythonSpeed/PerformanceTips#StringConcatenation和http://www.skymind.com/~ocrow/python_string/。 – 2010-03-05 17:43:34

+0

 谢谢! – 2010-03-05 18:24:27

-1
import cStringIO as StringIO # or import StringIO if on a fringe platform 
buf = StringIO.StringIO() 
for row in woof_1.findAll("tr", { "class" : "row_b" }): 
    for col in row.findAll(re.compile('td')): 
    buf.write(col.string if col.string else '') 

result = buf.getvalue() 
+0

这一个似乎工作!谢谢了很多=) – Pevo 2010-03-04 23:56:50

+0

谁对此低估了,为什么? – 2010-03-05 00:48:35

-1

摆脱所有提及GE_DB的。

做一个 outputtext = "" 开始。

更换GE_DB.write(col.string if col.string else '')outputtext += col.string if col.string else ''