[英]What would be the best way to go about converting this list of data to dictionary
[英]What would be the best way to run a loop within a print statement that is extracting data from a list in Python?
我正在嘗試從csv文件中提取數據,這是數據列之一的簡化版本
import csv
with open('Movie2.csv', 'r') as csv_file:
csv_reader = csv.reader(csv_file)
counter = 0
for line in csv_reader:
counter +=1
print('Movie m%d' % counter, "= new Movie();", '\n',
'm'+str(counter)+'.Genres.Add(db.Genres.FirstOrDefault(x => x.GenreName == "' % line[2]+'"));', '\n')
“ line [2]”通常是多種類型,可能看起來像“恐怖,驚悚,戲劇”。 我的目標是針對此特定代碼,最終結果應如下所示:
Movie m1 = new Movie();
m1.Genres.Add (db.Genres.FirstOrDefault(x => x.GenreName == "Horror"));
m1.Genres.Add (db.Genres.FirstOrDefault(x => x.GenreName == "Thriller"));
m1.Genres.Add (db.Genres.FirstOrDefault(x => x.GenreName == "Drama"));
您可以在一個循環中多次調用print
,而不是相反。
for counter, line in enumerate(csv_reader, start=1):
var = 'm%d' % (counter,)
genres = line[2].split(", ")
print('Movie %s = new Movie()' % (var,))
for genre in genres:
print('%s.Genres.Add (db.Genres.FirstOrDefault(x => x.GenreName == "%s"))' % (var, genre))
可以說用\\n'
連接行列表並調用一次print
的另一種選擇可能是不太可讀的:
for counter, line in enumerate(csv_reader, start=1):
var = 'm%d' % (counter,)
genres = line[2].split(", ")
code_lines = ['Movie %s = new Movie();' % (var,)]
code_lines.extend('%s.Genres.Add (db.Genres.FirstOrDefault(x => x.GenreName == "%s"))' % (var, genre) for genre in genres)
print("\n".join(code_lines))
盡管不算太多,我還是會一推再推。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.