猜测谁在学校玩游戏,无法找到从.txt fie中删除一行的方法。我一直收到以下错误:
<_io.TextIOWrapper name='characters.txt' mode='r' encoding='cp1252'>
<_io.TextIOWrapper name='characters.txt' mode='r' encoding='cp1252'>
<_io.TextIOWrapper name='characters.txt' mode='r' encoding='cp1252'>
以下是代码:
information = open("characters.txt","r")
hair = input("Does your character have black hair?") #Asks for input under variable name hair
if hair == "yes":
for line in lines: #Breaks it down into individual lines
if line.split(',')[1] == "Black hair":
lines.remove(line)
print(information)
答案 0 :(得分:1)
这不是错误。它是打开文件对象的字符串表示形式:
>>> open('a.txt')
<_io.TextIOWrapper name='a.txt' mode='r' encoding='cp1252'>
>>>
如果要打印此文件的内容,则需要调用其read
方法:
print(information.read())
read
方法将所有文件的内容读入字符串。但是,如果您只需要一行,请使用readline
方法。
答案 1 :(得分:1)
您可能不想打印information
但是您想要打印的内容并不完全清楚。
features = dict()
with open("characters.txt","r") as information:
for line in information:
_, haircolor = line.split(',')
features[haircolor] = line
hair = input("Does your character have black hair?")
if hair == "yes":
for entry in features['Black hair']:
print 'Character could be {}'.format(entry)
也许在这一点上,您可能想要提出另一个问题,以便根据其他一些显着特征减少剩余的条目。您可能应该将主循环设计为要询问的功能的循环,而不是创建一个长的,重复的程序,一次要求一个功能。如果您只剩下一个条目,则可以停止循环(或者如果您最终输入的条目为零,则无法猜测)。
对于它的价值,你的特征表示似乎不是最佳的,但由于你没有描述它,这只是一个快速的印象。 (如果你至少简单地描述了程序的相关部分,你可以得到更好的答案。)