如何解析/格式化一个元组字符串?

2024-09-23 16:25:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了一个成绩计算程序,现在只剩下最后几行了。。。我有一串元组:

"('Jetson Elroy', '45', '88', '88', '70', 0.7253846153846155, 'C', 'Not Passible', 0.9385714285714284, 0.6528571428571427, 0.367142857142857), ('Joe Kunzler', '99', '88', '77', '55', 0.7699999999999999, 'C', 'Not Passible', 0.8557142857142858, 0.5700000000000001, 0.28428571428571436), ('Harris Jones', '77', '99', '47', '77', 0.7115384615384616, 'C', 'Not Passible', 0.9642857142857143, 0.6785714285714286, 0.39285714285714285)"

我想让每个学生和他们的分数逐行打印到我的文本文件中,比如:

'Jetson', '45', '88', '88', '70', 0.7253846153846155, 'C', 'Not Passible', 0.9385714285714284, 0.6528571428571427, 0.367142857142857

'Joe', '99', '88', '77', '55', 0.7699999999999999, 'C', 'Not Passible', 0.8557142857142858, 0.5700000000000001, 0.28428571428571436

'Harris Jones', '77', '99', '47', '77', 0.7115384615384616, 'C', 'Not Passible', 0.9642857142857143, 0.6785714285714286, 0.39285714285714285

我试着做:

m=open('GradeAnalysis.txt', 'r+')
m.write (print i for i in ourlist)
m.close()

但是我知道如果你想使用m.write(),你必须有一个字符串。然后我把我的列表转换成像上面那样的元组串。如有任何建议,我们将不胜感激。你知道吗


Tags: 程序not学生分数writejetson元组文本文件
2条回答

^{}可以是一个简单的解决方案:

m.write('\n'.join(i for i in ourstring))

编辑:由于ourstring不是字符串列表而是字符串,因此可以使用正则表达式获取表示元组的字符串

import re

ourstring = "('Jetson Elroy', '45', '88', '88', '70', 0.7253846153846155, 'C', 'Not Passible', 0.9385714285714284, 0.6528571428571427, 0.367142857142857), ('Joe Kunzler', '99', '88', '77', '55', 0.7699999999999999, 'C', 'Not Passible', 0.8557142857142858, 0.5700000000000001, 0.28428571428571436), ('Harris Jones', '77', '99', '47', '77', 0.7115384615384616, 'C', 'Not Passible', 0.9642857142857143, 0.6785714285714286, 0.39285714285714285)"
tuples = re.findall(r'\((.+?)\)', ourstring) # (.+?) to perform a non-greedy match - important!
m.write ('\n'.join(t for t in tuples))

使用^{}^{} module写入数据。你知道吗

使用','.join(str(i) for i in ourlist)创建一个逗号分隔的字符串来写入文件,但是由于这实际上是CSV数据,csv模块可能更适合。你知道吗

import csv

with open('GradeAnalysis.txt', 'rb') as out:
    writer = csv.writer(out)
    for row in list_of_sequences:
        out.writerow(row)        

其中list_of_sequences是包含其他列表或元组的列表;例如:

list_of_sequences = [(1, 2, 3), ('foo', 'bar', 'baz')]

相关问题 更多 >