2010-03-04 3 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. –

+0

ОК, когда вы запускаете приведенный выше скрипт на сайте со столом. он принимает что-то между td-тегами. Я бы хотел, чтобы это значение сохранялось как переменная. – Pevo

+5

Что случилось с массой -1 голосов? –

ответ

-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

Я получаю недействительный синтаксис для | if (col.string) | на) не уверены, почему. =/Что-то я сделал? – Pevo

+0

@Pevo, извините за это, я пропустил двоеточие после заявления. Исправлено. – Li0liQ

+0

Ваш корреспондент пропустил необходимый ':' но включенный избыточный '(' и ')' ;-) –

-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

и почему я был уволен? любая обратная связь оценена! –

+0

Конкатенация строк, как правило, в Python, как правило, неодобрительно. Лучше (стиль и эффективность) создавать список строк, а затем «присоединяться» к ним (или, если OP хочет продолжить использование файловых объектов, используйте 'StringIO'). См. Http://wiki.python.org/moin/PythonSpeed/PerformanceTips#StringConcatenation и http://www.skymind.com/~ocrow/python_string/ для получения дополнительной информации. –

+0

  спасибо! –

-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

Этот, кажется, работает !!! thank's a lot =) – Pevo

+0

Кто черт проиграл это, и почему? –

-1

Избавьтесь от всех упоминаний о GE_DB.

Дайте outputtext = "" в начале.

Заменить GE_DB.write(col.string if col.string else '') с outputtext += col.string if col.string else ''