Python中的新行不起作用

2024-09-28 01:28:52 发布

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

我必须从一个文件中读取并按字母顺序输入到另一个文件中。所以我做了脱衣舞,然后排序(),现在我不能得到它到新线由于某种原因,可以有人请指导我在做什么我不正确的。你知道吗

      infile = open("unsorted_fruits.txt", "r")
      outfile=open("sorted_fruits.txt","w")



      for line in infile:
          fruit=infile.read().split() 
          fruits = sorted(fruit)
          timeflies = str(fruits)
          outfile.write(timeflies + '\n');
          print (timeflies )



      infile.close()
      outfile.close()

Tags: 文件txtclose排序顺序字母openinfile
3条回答

你做错了什么:在第一次迭代中,你已经阅读了从infileinfile.read()的所有内容,但是在第二次迭代中,没有什么可以阅读的了。因此,应该在循环之前读取文件,并遍历排序的列表。你知道吗

试试这个:

infile = open("unsorted_fruits.txt", "r")
outfile=open("sorted_fruits.txt","w")

fruit=infile.read().split() 
fruits = sorted(fruit)
for line in fruits:
    timeflies = str(line)
    outfile.write(timeflies)
    print (timeflies )
infile.close()
outfile.close()

注意:.split()在每一个空格处分裂,而不是每一个新行。因此,如果你的水果名中有空格,它将被拆分。你知道吗

您可以查看此代码的改进版本:

with open("unsorted_fruits.txt", "r") as infile, 
        open("sorted_fruits.txt","w") as outfile:
    fruits = sorted(infile.readlines())
    outfile.writelines(fruits)

你在写数组本身。这是一个修改过的版本。你知道吗

infile = open("unsorted_fruits.txt", "r")
outfile=open("sorted_fruits.txt","w")

fruit=infile.read().split()

fruits = sorted(fruit)
timeflies = str(fruits)
print (timeflies )

for fruit in fruits:
    outfile.write(fruit + '\n')

infile.close()
outfile.close()

分析:

下面是循环的作用,一行一行:

# Reading each line of input:
for line in infile:

    # Ignore that first line and read
    #   the rest of the file.
    #   Split that into individual fruit names
    fruit=infile.read().split()

    # Sort the list of fruits #2 through end-of-file
    fruits = sorted(fruit)

    # Make a string representation of that list.
    timeflies = str(fruits)

    # Put a single line feed after that string and dump it
    #   to the output file.
    outfile.write(timeflies + '\n');
    print (timeflies)

为了说明这一点,timeflies是一个如下所示的字符串:

"['apple', 'kumquat', 'persimmon', 'pineapple', 'tomato']"

它不是一个列表;它是一个字符串,看起来像您下一步可能要使用的列表。也许下一个有用的步骤是

timeflies = '\n'.join(fruits)

但是,您仍然浪费了循环(它只能执行一次)并丢失了第一行。你知道那是怎么回事吗?你知道吗

解决方案:

infile = open("unsorted_fruits.txt", "r")
outfile=open("sorted_fruits.txt","w")

# Make a list of the input fruits
fruit_list = []
for line in infile:
    fruit_list.extend(line.split())

# Sort that list
fruit_list.sort()

# Print it to the output file, one line at a time
for fruit in fruit_list:
    print(fruit, file=outfile)

输入文件:

banana
pineapple
tomato
kumquat
apple
persimmon

输出文件:

$ cat sorted_fruits.txt 
apple
banana
kumquat
persimmon
pineapple
tomato

相关问题 更多 >

    热门问题