【问题标题】:Python only prints the last list in a 2d list [duplicate]Python仅打印二维列表中的最后一个列表[重复]
【发布时间】:2016-12-23 14:22:19
【问题描述】:

我有一个从网站上抓取的二维词汇表。现在我要做的是,在它自己的.txt 文件中打印二维数组的每个列表,但是,当它写入它时,它只写入二维数组中的最后一个列表。这是我第一次尝试将二维数组写入.txt 文件。不知道我做错了什么。

我正在尝试将 2d 列表中的 20 个列表写入 20 个不同的 .txt 文件。

这是我用来编写带有 2D 数组的 .txt 文件的方法

到目前为止,我已经尝试使用“a”而不是“w”,但这会将整个 2d 列表写入 .txt 文件(即,它会生成 20 个 .txt 文件,其中包含 2d 列表的所有内容)

for words in souparray:
    with open(path + sublink + '.txt', 'w', encoding='utf-8') as txtf:
        str1 = ''.join(words)
        txtf.write(str1)
        str1 = ""

【问题讨论】:

  • 二维数组的最后一个列表写入所有文件?
  • @Nurzhan 是的,它只写入二维列表中的最后一个列表。所以如果有 [ [x,y,z] , [a,b,c]] 它只会写 a b c
  • 有多少个文件?
  • @Nurzhan 我有 20 个具有不同词汇的 URL,所以这是一个锯齿状的二维列表。我正在尝试制作 20 个文本文件
  • 您是否在任何地方更改pathsublink

标签: python arrays


【解决方案1】:

您正在写入文件,写入模式会覆盖文件的内容并删除文件中之前的内容。

您想要追加到文件,因此您应该在打开文件时使用 append 方法。这将起作用,

for words in souparray:
    with open(path + sublink + '.txt', 'a', encoding='utf-8') as txtf:
        str1 = ''.join(words)
        txtf.write(str1)
        str1 = ""

【讨论】:

  • 使用 'a' 将整个二维数组写入 txt 文件。我正在尝试获取 20 个不同的 txt 文件,每个列表打印成一个
  • 你有子链接列表吗?
  • yes(?) 我有一个我正在使用的所有网址的列表。
  • 努尔詹的回答对你有用吗?
  • 不,我不是已经用子链接更改了每个 txt 文件的名称
【解决方案2】:

您似乎将所有内容都写入同一个文件。您需要更改您写入的名称文件:

for words in souparray:
    with open(path + sublink + '.txt', 'w', encoding='utf-8') as txtf:
        str1 = ''.join(words)
        txtf.write(str1)
        str1 = ""

sublink 应该随着每次迭代而改变。或者如果子链接部分没有改变,你需要添加一些计数器。

例如:

...
count = 0

for words in souparray:
    with open(path + sublink + count + '.txt', 'w', encoding='utf-8') as txtf:
        str1 = ''.join(words)
        txtf.write(str1)
        str1 = ""
    count+=1
    txtf.close()

【讨论】:

  • 显然他想将其写入一个文件,他只是使用了错误的模式。
  • @Natecat 阅读 cmets。他明确表示他需要单独的文件。请在投票前仔细阅读!
  • 拜托,在盲目骂我之前,请仔细阅读。他正在更改每个文件的路径子链接,但代码不包含该路径,因此通过循环整个块来创建不同的文本文件。注意到他在上一条评论中是如何说文本文件的复数形式吗?
猜你喜欢
  • 1970-01-01
  • 2020-07-29
  • 2017-09-16
  • 2022-07-07
  • 2014-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多