如何将文件中的字符串转换回Python中的列表?
我正在为一个缺少它的游戏编写一个锦标赛创建者,仅供个人使用。这对学校来说是一个很好的锻炼。。。然而,我在完成程序时偶然发现了一个问题 因此,在确定了锦标赛的参赛者之后,我会问用户本人,最多也就是我的表弟,如果他想保存当前的参赛者名单,是否会过来。如果是,包含参与者的列表将写入文件:如何将文件中的字符串转换回Python中的列表?,python,string,list,serialization,Python,String,List,Serialization,我正在为一个缺少它的游戏编写一个锦标赛创建者,仅供个人使用。这对学校来说是一个很好的锻炼。。。然而,我在完成程序时偶然发现了一个问题 因此,在确定了锦标赛的参赛者之后,我会问用户本人,最多也就是我的表弟,如果他想保存当前的参赛者名单,是否会过来。如果是,包含参与者的列表将写入文件: fileWrite = open('Previous Participants', 'w') fileWrite.write(str(participants2)) fileWrite.close() 但是,这会将
fileWrite = open('Previous Participants', 'w')
fileWrite.write(str(participants2))
fileWrite.close()
但是,这会将列表转换为字符串,因此如果我想在下次运行程序时读取它。。。我有一根绳子。不是一个列表,我需要一个列表,让比赛创建者自己随机化比赛,等等
所以。。。如何将此字符串作为列表返回?问题是,我想我可以使用split,但我相信参与者的名字加空格会是个问题
当前该文件包含上次的以下字符串:
['Cell', 'Lord Slug', 'Time Patroller', 'Gotenks', 'Omega Shenron', 'Nail', 'Time Breaker Bardock', 'Piccolo', 'Frieza', 'Mr. Satan', 'Beerus', 'Nappa', 'Raspberry', 'Goten', 'Vegito', 'Goku']
像“slug勋爵”这样的参与者,如果我这样做,就会引起问题:
ownCharacters = input('Do you wish to use the same participants as last time? ')
if ownCharacters == 'yes' or ownCharacters == 'Yes':
try:
fileRead = open('Previous Participants', 'r')
participants2 = fileRead.read()
participants2.split
except FileNotFoundError:
participants2 = participants2
不是吗?
顺便说一句,当程序到达此点时,参与者2已经用随机名称填充,因此如果文件不存在,则应继续使用随机名称。不要将列表作为字符串写入。有很多方法可以做到这一点。最常见的是将每个用户写入文件的不同行,或者使用csv或其他类型的分隔符
import csv
with open('file_name.csv', newline='') as fh:
writer = csv.writer(fh)
writer.writerow(participants2)
不要将列表写为字符串。有很多方法可以做到这一点。最常见的是将每个用户写入文件的不同行,或者使用csv或其他类型的分隔符
import csv
with open('file_name.csv', newline='') as fh:
writer = csv.writer(fh)
writer.writerow(participants2)
一种更好的方法是将名称写入文件,每行一个:
fileWrite.write('\n'.join(participants2))
然后,您可以通过readlines检索名称列表:
但是,将数据序列化为文件的正确方法是使用经过测试的库,如或:
然后,您可以通过以下方式检索列表:
with open('file.json', 'r') as f:
participants = json.load(f)
# participants = pickle.load(f)
一种更好的方法是将名称写入文件,每行一个:
fileWrite.write('\n'.join(participants2))
然后,您可以通过readlines检索名称列表:
但是,将数据序列化为文件的正确方法是使用经过测试的库,如或:
然后,您可以通过以下方式检索列表:
with open('file.json', 'r') as f:
participants = json.load(f)
# participants = pickle.load(f)
首先通过加入写入列表:
file.write','.joinlist
阅读并使用split返回列表:
data=file.read读取数据
列表=数据。拆分','拆分数据
对于多个列表,不同级别的分离可能会起作用首先通过连接写入列表:
file.write','.joinlist
阅读并使用split返回列表:
data=file.read读取数据
列表=数据。拆分','拆分数据
对于多个列表,不同级别的分隔可能会起作用为什么不使用outputnames=','。JoinParticipants 2在写入文件之前,将其设置为CSV。您可以将更改为名称中不允许的任何字符。为什么不在写入文件之前使用outputnames=','。JoinParticipants 2,使其成为CSV。您可以将更改为名称中不允许的任何字符谢谢!第一个是有效的,为了简单起见,我现在选择了它。但我确实记下了你的另一个“适当”解决方案。你发布了一些很棒的信息:谢谢!第一个是有效的,为了简单起见,我现在选择了它。但我确实记下了你的另一个“适当”解决方案。你发布了一些很棒的信息:D