代码之家  ›  专栏  ›  技术社区  ›  RykerStrike

为什么我的输出文件将前两行合并在一起,以及如何将它们分开?

  •  0
  • RykerStrike  · 技术社区  · 10 月前

    当我运行程序时,它会将列表中的前两项组合在一起。这是我输入文件中的内容:

    programming
    python
    world
    hello
    

    输出文件返回:

    programmingpython
    world
    hello
    

    这是我需要的输出:

    程序设计
    蟒蛇
    世界
    你好
    

    这是任务:假设我们有一个文件words.txt,其中包含一个英文单词列表,每行一个单词。编写Python程序,从该文件中读取单词,并以相反的顺序将这些单词写入输出文件out_words.txt。即输入文件中的最后一个单词应该是输出文件中的第一个单词,依此类推。

    这就是我迄今为止所拥有的:

    in_file = open("words.txt", "r")
    out_file = open("out_words.txt", "w")
    L = []
    for line in in_file:
        L == L.append(line)
        reverse = L[::-1]
        string = "".join(reverse)
    print(string, file=out_file)
    
    
    in_file.close()
    out_file.close()
    
    2 回复  |  直到 10 月前
        1
  •  0
  •   RykerStrike    10 月前

    这就是我最终的结果,我不知道这是否有意义,但它有效

    in_file = open("words.txt", "r")
    out_file = open("out_words.txt", "w")
    L = []
    for line in in_file:
        L.append(line)
    
    reverse_string = L[::-1]
    string = " ".join(reverse_string).split()
    
    for item in string:
        print(item, file=out_file)
    
    in_file.close()
    out_file.close()
    
        2
  •  0
  •   blhsing    10 月前

    得到前两个单词连接在一起的输出的原因是,输入文件没有以换行符结尾,因此,当将行反转为字符串列表,然后用空字符串连接时,没有换行符的最后一行与没有分隔符的倒数第二行连接。

    您可以使用 str.splitlines 方法按换行符分割文件内容,但不将换行符保留在返回的字符串列表中。通过将输入行规范化为不包含换行符,您可以使用 print :

    with open('words.txt') as in_file, open("out_words.txt", "w") as out_file:
        print(*reversed(in_file.read().splitlines()), sep='\n', file=out_file)
    

    演示: https://replit.com/@blhsing1/ElaborateAmazingLaw

        3
  •  -1
  •   linpingta    10 月前

    您不应该将L设置为L.append的返回值,也不需要在迭代中放入反向操作(我想当您在这里复制代码时,这是拼写错误)

    请尝试以下代码:

    in_file = open("words.txt", "r")
    out_file = open("out_words.txt", "w")
    
    # Read all of the words from the input file into a list.
    L = []
    for line in in_file:
        L.append(line)
    
    reverse = L[::-1]
    with open("out_words.txt", "w") as out_file:
        for word in reverse:
            print(word, file=out_file)
    
    in_file.close()
    out_file.close()