我已经暂时停留在这个Python作业问题上了一段时间:"编写一个完整的python程序,从文件inner.txt读取20个实数,并按排序顺序输出到文件outter。 TXT"
好吧,我所做的是:
f=open('inner.txt','r')
n=f.readlines()
n.replace('\n',' ')
n.sort()
x=open('outter.txt','w')
x.write(print(n))
所以我的思考过程是:打开文本文件,n是其中的读取行列表,我替换其中的所有换行符提示,以便可以正确排序,然后打开我要写入的文本文件并将列表打印到它。第一个问题是它不允许我替换新的行功能,第二个问题是我无法将列表写入文件。
答案 0 :(得分:1)
我刚试过这个:
>>> x= "34\n"
>>> print(int(x))
34
因此,您不必像这样过滤掉"\n"
,但可以将其放入int()
以将其转换为整数。假设每行有一个数字,它们都是整数。
然后,您需要将每个值存储到列表中。列表中包含.sort()
method,您可以使用该列表对列表进行排序。
编辑:
忘了提及,正如其他人已经说过的那样,你需要迭代n
中的值,因为它是一个列表,而不是单个项目。
答案 1 :(得分:1)
这是一个逐步解决方案,可以解决您遇到的问题:)
打开文件,没有错。
f=open('inner.txt','r')
不要忘记关闭文件:
f.close()
n
现在是每行的列表:
n=f.readlines()
没有list.replace
种方法,因此我建议将上述行更改为n = f.read()
。然后,这将工作(不要忘记重新分配n
,因为字符串是不可变的):
n = n.replace('\n','')
你仍然只有一个充满数字的字符串。但是,我建议使用换行符作为分隔符来拆分字符串,而不是替换换行符:
n = n.split('\n')
然后,将这些字符串转换为整数:
`n = [int(x) for x in n]`
现在,这两个将起作用:
n.sort()
x=open('outter.txt','w')
您想自己编写数字,所以请使用:
x.write('\n'.join(str(i) for i in n))
最后,关闭文件:
x.close()
在处理文件时,使用上下文管理器(with
语句)也是一种很好的做法:
with open('inner.txt', 'r') as f:
# do stuff with f
# automatically closed at the end
答案 2 :(得分:1)
我猜real
表示浮动。因此,您必须将结果转换为float才能正确排序。
raw_lines = f.readlines()
floats = map(float, raw_lines)
然后你必须对它进行排序。要重新编写结果,您必须转换为字符串并使用行结尾连接:
sortеd_as_string = map(str, sorted_floats)
result = '\n'.join(sortеd_as_string)
最后你必须把结果写到目的地。
答案 3 :(得分:0)
好的,让我们一步一步地看一下你想做什么。
首先:从文本文件中读取一些整数。
Pythonic版本:
fileNumbers = [int(line) for line in open(r'inner.txt', 'r').readlines()]
易于获取版本:
fileNumbers = list()
with open(r'inner.txt', 'r') as fh:
for singleLine in fh.readlines():
fileNumbers.append(int(singleLine))
它的作用:
fileNumbers
第二:对列表进行排序
fileNumbers.sort()
它的作用:
sort
函数按其值排序列表,例如[5,3,2,4,1] -> [1,2,3,4,5]
第三:将其写入新文本文件
with open(r'outter.txt', 'a') as fh:
[fh.write('{0}\n'.format(str(entry))) for entry in fileNumbers]