首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Python文件中读取行的更好方法是什么?

从Python文件中读取行的更好方法是什么?
EN

Stack Overflow用户
提问于 2011-10-24 11:05:08
回答 3查看 1.7K关注 0票数 3

这是我的python文件:-

代码语言:javascript
运行
复制
TestCases-2
Input-5
Output-1,1,2,3,5
Input-7
Ouput-1,1,2,3,5,8,13

我想要的是:-

  • A变量test_no = 2 (No.(测试案例) testCaseInput = [5,7]
  • A testCaseOutput = [[1,1,2,3,5],[1,1,2,3,5,8,13]]

列表(

  • )

我试过这样做:

代码语言:javascript
运行
复制
               testInput = testCase.readline(-10)

        for i in range(0,int(testInput)):
            testCaseInput = testCase.readline(-6)
            testCaseOutput = testCase.readline(-7)

下一步是在(',')的基础上去掉这些数字,然后将它们放入一个列表中。

奇怪的是,readline(-6)并没有给出预期的结果。

有没有更好的方法来做这件事,显然我错过了。

我不介意在这里使用序列化,但我想让某人编写一个文本文件非常简单,就像我所展示的那样,然后将数据从其中删除。怎么做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-24 11:17:06

readline方法的负参数指定要读取的字节数。我不认为这是你想要做的。

相反,使用readline()一次将所有内容都拉到列表中更简单。

代码语言:javascript
运行
复制
with open('data.txt') as f:
    full_lines = f.readlines()

# parse full lines to get the text to right of "-"
lines = [line.partition('-')[2].rstrip() for line in full_lines]

numcases = int(lines[0])
for i in range(1, len(lines), 2):
    caseinput = lines[i]
    caseoutput = lines[i+1]
    ...

这里的想法是分离关注点(数据的来源,'-‘的解析,以及如何处理这些案例的业务逻辑)。这比在每一步都有一个readline()和冗余解析逻辑要好。

票数 2
EN

Stack Overflow用户

发布于 2011-10-24 11:16:06

我不确定我是否按照你想做的做,但我想我会尝试这样的方法:

代码语言:javascript
运行
复制
testCaseIn = [];
testCaseOut = [];

for line in testInput:
    if (line.startsWith("Input")):
        testCaseIn.append(giveMeAList(line.split("-")[1]));
    elif (line.startsWith("Output")):
        testCaseOut.append(giveMeAList(line.split("-")[1]));

其中,giveMeAList()是一个函数,它接受一个逗号分隔的数字列表,并从中生成列表数据。

我没有测试这段代码,但当我过去想要创建配置文件时,我编写了使用这种结构的东西。

票数 2
EN

Stack Overflow用户

发布于 2011-10-24 11:16:22

  1. 这一行有一个错误:

输出-1,1,2,3,5,8,13/应该是“输出”而不是“输出”--

  • --这应该有效:

testCase = open('in.txt','r') testInput = int(testCase.readline().replace("TestCases-","")) for i in range(0,int(testInput)):testCaseInput =testCase.readline().replace(“输入-”,“) testCaseOutput = testCase.readline().replace("Output-",”).split(“,")

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7874643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档