2017-01-25 4 views
0

Этот код извлекает немного данных из RottenTomatoes. (Названия фильмов и помидоры.) Я бы хотел удалить последние 6 и первые 3 символа из каждого элемента, так что останется только название фильма. Я знаю, что то, что я пытаюсь сейчас, только удалит числа, если это сработает. Я не знаю, было ли то, что я пытаюсь сделать, но это говорит о том, что у меня есть кортеж, когда я думал, что у меня есть список, поэтому он может быть более сложным, чем я понимаю.Попытка удалить первые 3 и последние 6 символов из каждого элемента в списке

Пример того, что у меня есть ...

[(u'Ouija: Origin of Evil', 82), (u'Long Way North (Tout en haut du 
monde)', 98), (u'Come And Find Me', 67), (u'My Father, Die', 78), 
(u"Roger Corman's Death Race 2050", 100), ... 

То, что я хотел бы сделать для него (как постоянное изменение в списке & не только напечатанный на новый лад) ...

[Ouija: Origin of Evil, Long Way North (Tout en haut du monde), Come 
And Find Me, My Father, Die, Roger Corman's Death Race 2050"... 

Мой код ...

import requests 

r = requests.get('https://www.rottentomatoes.com/api/private/v2.0/' 
       'browse?page=1&limit=30&type=dvd-top-rentals&' 
       'services=amazon%3Bamazon_prime%3Bfandango_now%' 
       '3Bhbo_go%3Bitunes%3Bnetflix_iw%3Bvudu&sortBy=popularity') 

movies = [] 
data = r.json() 
for result in data["results"]: 
    movies.append((result["title"], result["tomatoScore"])) 

list2 = [i for i in movies if i[1] >=60] 
list2 = ' '.join(list2).replace('1''2''3''4''5''6''7''8''9','').split() 

print list2 

ошибка ...

(venv) My-MacBook-Pro:tor Me$ python bs.py 
Traceback (most recent call last): 
    File "bs.py", line 16, in <module> 
    list2 = ' '.join(list2).replace('1''2''3''4''5''6''7''8''9','').split() 
TypeError: sequence item 0: expected string, tuple found 
(venv) My-MacBook-Pro:tor Me$ 
+1

У вас есть список кортежей. Я думаю, вы просто хотите '[t [0] для t в списке2]' –

+0

Вы имеете в виду «(u '» в результате? Вы сохранили данные как список кортежей, а в качестве строки в ней - python печатает это. Он ссылается на unicode. Для справки http://stackoverflow.com/questions/2464959/whats-the-u-prefix-in-a-python-string –

ответ

0

Вы хотите, чтобы первый элемент в каждом кортеже содержится в списке, например, так:

>>> mylist = [ 
    (u'Ouija: Origin of Evil', 82), 
    (u'Long Way North (Tout en haut dumonde)', 98), 
    (u'Come And Find Me', 67), (u'My Father, Die', 78), 
    (u"Roger Corman's Death Race 2050", 100) ] 
>>> result = [i[0] for i in mylist] 
>>> print result 
>>> ['Ouija: Origin of Evil', 'Long Way North (Tout en haut dumonde)', 'Come And Find Me', 'My Father, Die', "Roger Corman's Death Race 2050"] 
+0

Похоже, что в некоторых из символов Unicode есть символы Unicode данные, которые вы обрабатываете. Я использовал str() в понимании списка, чтобы попытаться вернуть строку «красиво печатаемой», но, честно говоря, это, вероятно, не обязательно. Я изменил свой пример, чтобы удалить его. Ведущий u перед каждым строка просто указывает, что это строка в Юникоде. – Apollo2020

+1

Это был какой-то заголовок со странными символами. Если вы запустите код и вытащите данные с RottenTomatoes.com, вы увидите его позицию [9]. Я удалил его, и я удалил свой комментарий спрашивая вас об этом. Спасибо, что указали название и номер были разными Предметы. Я многому научился здесь. – Ant