2012-06-21 3 views
4

Итак, я новичок в python, и мне отчаянно нужна помощь.Передача переменной в url?

У меня есть файл с множеством идентификаторов (целых значений), написанных на em. Его текстовый файл.

Теперь мне нужно передать каждый идентификатор внутри файла в URL-адрес.

Например «https://example.com/[id]»

Это будет сделано таким образом

A = json.load(urllib.urlopen("https://example.com/(the first id present in the text file)")) 
print A 

Что это будет по существу сделать то, что он будет читать некоторую информацию о идентификатор, указанный в вышеуказанном URL-адресе, и отображение его. Я хочу, чтобы это работало в формате цикла, где в нем будут считываться все идентификаторы внутри текстового файла и передавать их на URL-адрес, указанный в «A», и постоянно отображать значения. Есть ли способ сделать это?

Буду очень признателен, если кто-то может мне помочь!

ответ

10

Старая строка стиль конкатенации может быть использован

>>> id = "3333333" 
>>> url = "https://example.com/%s" % id 
>>> print url 
https://example.com/3333333 
>>> 

Новая строка стиля форматирования:

>>> url = "https://example.com/{0}".format(id) 
>>> print url 
https://example.com/3333333 
>>> 

Показание для файла, как упомянуто avasal с небольшим изменением:

f = open('file.txt', 'r') 
for line in f.readlines(): 
    id = line.strip('\n') 
    url = "https://example.com/{0}".format(id) 
    urlobj = urllib.urlopen(url) 
    try: 
     json_data = json.loads(urlobj) 
     print json_data 
    except: 
     print urlobj.readlines() 
+0

+1 для зачистки новой строки. – SuperSaiyan

+0

Спасибо, что помогли мне. Сейчас я столкнулся с новой проблемой. Предположим, что я пытаюсь прочитать текстовый файл, скажем, всего лишь несколько идентификаторов, он не имеет проблем при выполнении. Но у моего текстового файла, откуда я читаю идентификаторы, их много. И код не выполняется. Что является причиной этого? Есть ли способ обойти это? – user1452759

+0

@ user1452759: Какая ошибка вы получаете? Было бы неплохо начать с этого. Решение должно работать, даже если у вас много идентификаторов. Скорее всего, не все выборки url возвращают данные, которые могут быть загружены в json – pyfunc

2

ленивый стиль:

url = "https://example.com/" + first_id 

A = json.load(urllib.urlopen(url)) 
print A 

старый стиль:

url = "https://example.com/%s" % first_id 

A = json.load(urllib.urlopen(url)) 
print A 

новый стиль 2.6+:

url = "https://example.com/{0}".format(first_id) 

A = json.load(urllib.urlopen(url)) 
print A 

новый стиль 2.7+:

url = "https://example.com/{}".format(first_id) 

A = json.load(urllib.urlopen(url)) 
print A 
1

Первое, что вам нужно сделать, это знать, как читать каждую строку из файла. Сначала вы должны открыть файл; Вы можете сделать это с with заявления:

with open('my-file-name.txt') as intfile: 

Это открывает файл и сохраняет ссылку на этот файл в intfile, и он будет автоматически закрыть файл в конце вашего with блока. Затем вам нужно прочитать каждую строку из файла; Вы можете сделать это с регулярным старый цикл:

for line in intfile: 

Этот цикл будет через каждую строку в файле, читая их по одному за раз. В вашем цикле вы можете получить доступ к каждой строке как line. Осталось только сделать запрос на ваш сайт с помощью кода, который вы указали. Один бит вашего недостающего - это то, что называется «интерполяцией строк», что позволяет отформатировать строку с другими строками, числами или чем-либо еще.В вашем случае вы хотите поместить строку (строку из вашего файла) внутри другой строки (URL). Чтобы сделать это, вы используете %s флаг вместе с оператором интерполяции строки, %:

url = 'http://example.com/?id=%s' % line 
A = json.load(urllib.urlopen(url)) 
print A 

Собираем все вместе, вы получите:

with open('my-file-name.txt') as intfile: 
    for line in intfile: 
    url = 'http://example.com/?id=%s' % line 
    A = json.load(urllib.urlopen(url)) 
    print A 
+0

Спасибо, что помогли мне. Сейчас я столкнулся с новой проблемой. Предположим, что я пытаюсь прочитать текстовый файл, скажем, всего лишь несколько идентификаторов, он не имеет проблем при выполнении. Но у моего текстового файла, откуда я читаю идентификаторы, их много. И код не выполняется. Что является причиной этого? Есть ли способ обойти это? – user1452759

+0

Не могли бы вы вывести сообщение об ошибке? Трудно сказать, не зная, о чем говорит проблема. –