我有一个充满视频游戏名称的文本文件,如下所示:
AlienBlaster
TombStealer
SwordMaster
etc...
我想从该文件中的名称生成一个大的插入语句,如下所示:
INSERT INTO GameNames (Name, GroupId) VALUES
('AlienBlaster', 193),
('TombStealer', 193),
('SwordMaster', 193);
with open('GameNames.txt', encoding='utf-8)') as my_file:
Aff_array = my_file.readlines()
l1 = []
print('INSERT INTO GameNames(Name, GroupId) VALUES\n')
for elem in Aff_array:
l1.extend(elem.strip().split('\n'))
print (', '.join("'{0}'".format(w) for w in l1), 193)
我没有任何错误,我只得到了一长串的名称和193,并且我的输出看起来像这样:
λ python createInsertFromFile.py
INSERT INTO GameNames(Name, GroupId) VALUES
'AlienBlaster' 193
'AlienBlaster','TombStealer' 193
'AlienBlaster','TombStealer','SwordMaster' 193
etc...
我不确定为什么要重复输入游戏名称。
我有什么想念的吗?
谢谢!
INSERT INTO GameNames(Name, GroupId) VALUES
('AlienBlaster
', 193), ('TombStealer
', 193), ('SwordMaster
您的循环已经在行上循环,所以我不确定为什么您尝试在'\ n'上分割。
在循环中的每次迭代中,您扩展列表l1,列表每次扩展时都使用Aff_array中的另一个元素。与其相反,您只想打印类似的内容:
print('('{0}', {1}),'.format(elem, 193))
或者,当您尝试使用join时,可以尝试类似的操作,而无需任何循环:
print(', '.join(['(\'{0}\', {1})'.format(elem, 193) for elem in Aff_array]) + ';')