我有以下清单
[
['90 min', 'Drama', 'Horror', 'Thriller', 'User Rating: 8.2/10 (28,588 user ratings)', '82', 'Metascore', 'Rank:', '2', 'Showtimes:', 'Studio Movie Grill - Downey', '11:15 am', '12:05 pm', '1:40', '2:30', '4:15', '6:40', '7:30', '9:05', '10:15'],
['90 min', 'Drama', 'Horror', 'Thriller', 'User Rating: 8.2/10 (28,588 user ratings)', '82', 'Metascore', 'Rank:', '2', 'Showtimes:', 'AMC Norwalk 20', '11:45 am', '12:45 pm', '2:15', '3:15', '4:45', '5:45', '7:15', '8:15', '9:45', '10:45'],
['90 min', 'Drama', 'Horror', 'Thriller', 'User Rating: 8.2/10 (28,588 user ratings)', '82', 'Metascore', 'Rank:', '2', 'Showtimes:', 'Cinemark Downey and XD', '10:00 am', '11:15', '12:30 pm', '1:45', '3:00', '4:15', '5:30', '6:30', '6:45', '8:00', '8:45', '9:15', '10:00', '10:30', '11:15', '11:45'],
['90 min', 'Drama', 'Horror', 'Thriller', 'User Rating: 8.2/10 (28,588 user ratings)', '82', 'Metascore', 'Rank:', '2', 'Showtimes:', 'AMC Stonebriar 24', '11:40 am', '12:30 pm', '2:00', '3:00', '4:40', '5:30', '7:20', '8:00', '10:00', '10:30'],
['90 min', 'Drama', 'Horror', 'Thriller', 'User Rating: 8.2/10 (28,588 user ratings)', '82', 'Metascore', 'Rank:', '2', 'Showtimes:', 'AMC Orange 30 (AMC Block 30)', '11:00 am', '12:15 pm', '1:30', '2:45', '4:00', '5:15', '6:30', '7:45', '9:00', '10:15']
]
我想做两件事
1)如果user rating('user rating:8.2/10(28588 user ratings)')>;=6.5,我想通过在列表中的现有值周围添加标记,使其变为粗体。 2) 其次,我希望将值移到“Showtimes:”之后,即列表中的第10个元素,并将其移到“0”位置
我不知道如何做到这一点,我是新的python。如果有人能给我一个起点,我会很感激的。你知道吗
解决方案
在下面Ajax1234提供的解决方案的帮助下,我能够写出我想要的东西。这可能不是最好的解决方案,但它是有效的。我从Ajax1234解决方案中添加的唯一改进是“用户评级”和“显示时间”的位置不是硬编码的,它们可以在列表中的任何位置。你知道吗
import re
s = [['86 min', 'Animation', 'Adventure', 'Comedy', 'Family', 'Fantasy', 'Mystery', 'Romance', 'User Rating: 4.7/10 (1,287 user ratings)', '36', 'Metascore', 'Rank:', '75', 'Showtimes:', 'Studio Movie Grill - Downey', '11:00 am', '1:15 pm', '3:30', '5:45', '7:55'], ['86 min', 'Animation', 'Adventure', 'Comedy', 'Family', 'Fantasy', 'Mystery', 'Romance', 'User Rating: 4.7/10 (1,287 user ratings)', '36', 'Metascore', 'Rank:', '75', 'Showtimes:', 'AMC Norwalk 20', '11:35 am', '2:00 pm', '4:30', '7:00', '9:25']]
x1=''
a1=''
def getvalues(x,a):
re_rating = re.compile('^User Rating: (\d(\.\d+)?)')
for i, j in enumerate(s):
for x,y in enumerate(j):
if y == "Showtimes:":
x1=x
for a,b in enumerate(j):
if re.match(re_rating, b):
a1=a
return x1,a1
x,a = getvalues(x1,a1)
print(x,a)
def fix_data(data,x,a):
tags = ['<b>', '</b>']
return [[i[x+1]]+i[:a]+[re.sub('(?<=User Rating: )[\d\.]+', '{}', i[a]).format((lambda x:tags[0]+x+tags[-1] if float(x) >= 6.5 else x)(re.findall('(?<=User Rating: )[\d\.]+', i[a])[0]))]+i[a+1:x+1]+i[x+2:] for i in data]
print(fix_data(s,x,a))
您可以使用regex和函数来指定应使用哪种类型的“标记”来包围某些值:
输出:
相关问题 更多 >
编程相关推荐