将文件中的数字添加到列表中

时间:2015-03-02 18:10:20

标签: python list file

好的,我有一个.txt文件,我需要将其上的内容添加到列表中,问题是每行只有一个字符,例如,如果我需要" 2+ 3",在.txt中它看起来像这样:

2
+
3

然后我必须将它添加到列表中,以使其看起来像这样[2,+,3]

在我现在的代码中,它以字符串形式添加内容并添加" \ n"在每个列表元素的末尾。我无法找到一种方法来使它将字符添加为int而没有\ n。 这是代码:

def readlist():
   count=0
   file=open("readfile.txt","r")
   list1=[]
   line=file.readlines()
   list1.append(line)
   print(list1)
   file.close

(正在阅读的文件中有1(2 + 3)个)

提前感谢您的帮助

3 个答案:

答案 0 :(得分:1)

最安全的方法是使用try / except:

out =  []
with open("in.txt") as f:
    for line in f:
        try:
            out.append(int(line))
        except ValueError:
            out.append(line.rstrip())
print(out)

[2, '+', 3]

在转换为int时你不需要去掉空格或换行符,python在这方面是宽容的,所以当我们捕获异常时我们只需要rstrip新行,因为那时我们有一个运算符。 / p>

另外with会自动关闭您的文件,这是您在自己的代码中实际上没有做的事情,因为您缺少调用方法file.close的parens {@ 1}}

答案 1 :(得分:0)

只需添加一些内容即可解决此问题。

首先,每一行在其字符串中都有一个 \ n ,因为它是文件中的新行。要删除此内容,您可以使用rstrip method解释here very well on how it works

从这里开始,你想要使用 int(line)将字符串转换为int。 This will turn the line into a integer然后您可以根据需要添加到列表中。

现在的问题是选择将哪一行转换为int,哪些是算术运算,例如示例文件中的 +

答案 2 :(得分:-1)

你可以做一个     line.split( '\ n')