【问题标题】:how can I export a list to txt without commas and quotes如何在没有逗号和引号的情况下将列表导出到 txt
【发布时间】:2021-10-31 13:00:17
【问题描述】:
fruits = ['bananas', 'apples', 'oranges', 'strawberry']
with open("fruits_text.txt", 'w') as totxt_file:
    totxt_file.write(str(fruits)+'\n')

上面代码中的“\n”不起作用,当我在这里运行时得到的就是我得到的

['bananas', 'apples', 'oranges', 'strawberry']

如何在没有逗号和引号的情况下导出它?像这样

bananas
apples 
oranges
strawberry 

【问题讨论】:

  • "上面代码中的 "\n" 不起作用" 是的。它会在文件末尾产生一个换行符,因为您将一个换行符连接到从str(fruits) 获得的字符串的末尾。如果你想写多行,那么你需要将多个'\ns 放入输出的东西。执行此操作的直接方法是进行多次write 调用,列表中的每一项调用一次。你知道for 循环是什么吗?
  • 另一种方法是创建一个包含所有列表内容和换行符的字符串。尝试将python how do I join a list of strings 放入搜索引擎。
  • 如果你在这一点上感到困惑,那是因为你试图一次做太多事情。你应该先检查你知道如何解决普通print输出的问题,然后研究如何使用文件。

标签: python python-3.x list file txt


【解决方案1】:

您可以将列表解压缩为 print 函数的参数,该函数支持文件输出的 file 关键字参数。使用 sep 关键字参数以换行符分隔每条记录:

with open("fruits_text.txt", 'w') as totxt_file:
    print(*fruits, sep='\n', file=totxt_file)

【讨论】:

    【解决方案2】:

    您可以使用带有理解的 writelines() 来为每个字符串添加行尾:

    fruits = ['bananas', 'apples', 'oranges', 'strawberry']
    with open("fruits_text.txt", 'w') as totxt_file:
        totxt_file.writelines(f+"\n" for f in fruits)
    

    【讨论】:

      【解决方案3】:

      一种使用str.join的方式:

      fruits = ['bananas', 'apples', 'oranges', 'strawberry']
      with open("fruits_text.txt", 'w') as totxt_file:
          totxt_file.write("\n".join(fruits))
      

      请注意,这不会在最后一行的最后插入行分隔符(此处为\n),这在某些情况下可能会出现问题。

      输出:

      # cat fruits_text.txt
      bananas
      apples
      oranges
      strawberry
      

      【讨论】:

      • 这有一个小缺点,即在文件末尾不包括可能导致问题的换行符。它还违反了 POSIX,这可能会造成一些情绪上的不适:)
      • @JanWilamowski 实际上它并没有在最后留下换行符。我经常用它来避免所以我没有意识到它可能是不利的,让我编辑。对于第二个问题,你能详细说明一下吗:)?
      【解决方案4】:

      遍历所有项目并分别编写:

      fruits = ['bananas', 'apples', 'oranges', 'strawberry']
      with open("fruits_text.txt", 'w') as totxt_file:
          for fruit in fruits:
              totxt_file.write(fruit + '\n')
      

      【讨论】:

      • 或将for 循环替换为totxt_file.write('\n'.join(fruits))
      • @bb1 我不喜欢这个,正如我在另一个答案中解释的那样。唯一的优势似乎是代码稍微短一些,但这被更多的复杂性和内存使用所抵消,除了缺少的最终换行符。
      • 那么:totxt_file.write('\n'.join(fruits) + '\n')
      • @bb1 现在您已经缓解了一个问题,但代价是在使用更多内存的同时降低了可读性。我不相信:)
      猜你喜欢
      • 1970-01-01
      • 2015-06-08
      • 2021-05-12
      • 2022-12-11
      • 2016-10-30
      • 2019-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多