从文本文件中的内容生成特定的字符串

问题描述 投票:0回答:1

我有一个充满视频游戏名称的文本文件,如下所示:

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
python-3.x
1个回答
1
投票

您的循环已经在行上循环,所以我不确定为什么您尝试在'\ n'上分割。

在循环中的每次迭代中,您扩展列表l1,列表每次扩展时都使用Aff_array中的另一个元素。与其相反,您只想打印类似的内容:

print('('{0}', {1}),'.format(elem, 193))

或者,当您尝试使用join时,可以尝试类似的操作,而无需任何循环:

print(', '.join(['(\'{0}\', {1})'.format(elem, 193) for elem in Aff_array]) + ';')
© www.soinside.com 2019 - 2024. All rights reserved.