【发布时间】:2019-05-31 16:40:14
【问题描述】:
我正在从名为 WeaponShack.list 的文本文件中读取文件
这些是'weapon shack.list'的内容:
Grenade
Ak-47
Shotgun
Makarov
Minigun
Bat
Katana
Chainsaw
Flamethrower
没有空格。这些项目按原样复制粘贴。
我尝试删除一些换行符,但是当我打印列表时,“\n”字符只是不断出现在某些元素上。我不明白为什么。
我尝试使用 .strip('\n') 但“\n”字符仍会在末尾弹出 一些元素。
print("Taking weapons from Weapon shack")
weapons = []
with open("WeaponShack.list",'r') as ws:
weapons = ws.readlines()
for weapon in weapons:
weapons.remove(weapon)
weapon = weapon.strip('\n')
weapons.append(weapon)
ws.close()
print(weapons)
预期的输出是:
从武器小屋拿武器 ['Ak-47'、'Makarov'、'蝙蝠'、'电锯'、'手榴弹'、'Minigun'、'Flamethrower'、'Katana'、'Shotgun']
但实际输出是:
从武器小屋拿武器 ['Ak-47\n', 'Makarov\n', '蝙蝠\n', '电锯\n', '手榴弹', 'Minigun', 'Flamethrower', 'Katana', 'Shotgun']
有人知道为什么会这样吗?
编辑
我的重点是为什么会出现“\n”字符。不是如何遍历列表。
也在尝试这个建议:adding a new list:
print("Taking weapons from Weapon shack")
weapons = []
newWeaponList = []
with open("WeaponShack.list",'r') as ws:
weapons = ws.readlines()
for weapon in weapons:
weapons.remove(weapon)
weapon = weapon.strip('\n')
newWeaponList.append(weapon)
ws.close()
print(newWeaponList)
产生这个输出:
从武器小屋拿武器 ['手榴弹','霰弹枪','迷你枪','武士刀','火焰喷射器']
很奇怪,因为它没有显示所有元素。
【问题讨论】:
-
因为您在迭代列表时正在修改列表。而是创建一个新列表。
-
这样做会导致“\n”字符出现吗?如果是的话?为什么会这样?
-
在迭代列表时从列表中删除内容会混淆列表中元素的相对顺序。由于您只对列表进行一次迭代,因此可能会跳过某些元素。所以
\n没有出现 - 它只是从未从某些元素中删除。