2013-07-10 3 views
1

У меня есть сценарий, который может взять окончательный URL перенаправления и сохранить его в CSV-файл.python csv список по строкам вместо столбцов

Скрипт коды записи в 1 колонке для примера А1 затем А3 затем А5

Как сделать это написать коды по строкам, например А1 В1 С1 D1

см this красный цвет, что я хочу, синий цвет, который является конечным результатом, и я не хочу, чтобы это было так (список в 1 колонке и вниз A1 A3 A5, и между каждой ячейкой есть пробелы!)

это мой окончательный сценарий

import urllib2 
import csv 
import sys 

url = 'http://www.test.com' 

u = urllib2.urlopen(url) 
localfile = open('C:\\test\\file.csv', 'a') 
writer = csv.writer(localfile) 
writer.writerow([u.geturl()]) 
localfile.close() 
+0

это может быть csv, который вы получаете. когда что-то происходит, что вы не понимаете, лучше всего посмотреть, что происходит. используйте csv.reader, а затем распечатайте некоторые из них, чтобы вы могли его увидеть, и, может быть, тогда вы поймете, что не так. Если нет, напишите, что вы видите, и, может быть, мы сможем помочь! –

+0

hi ryan но я хочу написать, чтобы не читать список (я хочу написать список URL-адресов по столбцам вместо строк –

ответ

1

Почему бы не просто создать CSV самостоятельно, если у него будет только одна строка?

import urllib2 

url = 'http://www.google.com' 

u = urllib2.urlopen(url) 
localFile = open('C:\\file.csv', 'ab') 
localFile.write(u.geturl() + ",") 

localFile.close() 
+0

вы удивительны !!!! теперь он работает !!! Я не могу этого сделать, потому что www.test.com - это частные URL-адреса , и URL-адреса перенаправляют меня на новые URL-адреса, поэтому мне нужно сохранить все URL-адреса бок о бок, тогда мне нужно импортировать файл csv (с огромной суммой URL-адресов), поэтому я не могу сделать это сам –

+0

и большое вам спасибо ton1c –

0

writer.writerow() означает запись списка в строку. Таким образом, каждый раз, когда вы его называете, будет новая строка. Таким образом, результат - это то, чего вы не хотите, они находятся в одной колонке. Если вы хотите записать их в одну строку. Вам лучше получить список, а затем поместить все нужные вам данные в строку, например l = [111, 222, 333, 444]. Затем вызовите writer.writerow(l) только один раз. Тогда вы можете получить то, что хотите.

редактировать:
Если сценарий служит как демон, работает все время и ждет ввода:

#10 is the number you want in a row, you can assign it yourself. 
L = [] 
urls = ['http://www.google.com', 'http://facebookcom', 'http://twitter.com'] 
for url in urls: 
    u = urllib2.urlopen(url) 
    L.append(u.geturl()) 

localfile = open('C:\\test\\file.csv', 'w') 
writer = csv.writer(localfile) 
writer.writerow(L) 
localfile.close() 

Если сценарий служит как обратный вызов, каждый раз, когда он получает только один URL. Мне очень жаль, что я не вижу никакого API в модуле csv, чтобы изменить файл.

И что касается меня, я не думаю, что в этом случае вам нужен файл csv. Одна строка в csv обычно представляет целую структуру данных, а не как список. Если вы хотите легко импортировать файл, вы можете просто использовать обычный файл, по одному URL-адресу или разделить пространство. В следующий раз, когда вам это нужно, вы можете просто использовать str методы, такие как split, чтобы обработать его и быстро включить в список.

>>> 'http://www.google.com\nhttp://www.facebook.com\nhttp://www.twitter.com'.split('\n') 
['http://www.google.com', 'http://www.facebook.com', 'http://www.twitter.com'] 
>>> 
+0

hi скрипт предназначен для сохранения перенаправленного URL-адреса и сохранения его (каждый раз, когда он дает мне новый url), поэтому я не могу написать конкретный список, потому что это неограниченный список. И я хочу писать URL каждый раз, когда я запускаю сценарий в новый столбец, такой как A1 B1 C1, а не A1 A3 A5 , что вы предлагаете изменить? –

+0

Я думаю, что список по-прежнему является лучшим выбором. Например, у меня есть глобальный список 'L', каждый раз, когда я получаю' url', я делаю 'L.append (url)'. См. Список не является конкретным , он изменяется динамически. После того, как вы получите количество URL-адресов, которые вы хотите в строке, например 10. Вы вызываете 'writow'. В' csv' список - это запись, каждое значение в записи находится в столбце. если вы хотите написать строку один раз, я думаю, что вы d, чтобы сначала прочитать строку, а затем добавить к ней новый url. Но это ничем не отличается от прямого использования списка. @ user2564147 – zhangyangyu

+0

Теперь я понимаю, что вы имеете в виду, просто как обратный вызов? Он не может выполняться все время, поэтому каждый раз есть только один URL-адрес.В этом случае, как я уже сказал выше, вам может потребоваться сначала прочитать запись, а затем добавить новый URL-адрес в запись и записать его обратно. Я не могу придумать ничего лучшего. Извините: (@ user2564147 – zhangyangyu

Смежные вопросы