【问题标题】:How to write/append 2 columns into a .txt file Using Python?如何使用 Python 将 2 列写入/追加到 .txt 文件中?
【发布时间】:2019-01-29 22:00:04
【问题描述】:

我是编程新手我在一个小项目中工作我遇到了这个问题:

我想在一个 .txt 文件中附加 2 个不同的列。

def write_file_content(file_name_to_write):
    container=[]
    date=get_current_date()
    time=get_current_time()
    container.append(date)
    container.append(time)

  with open(get_EveryDayTrans_folder_path()+file_name_to_write+".txt","a") as edit_file:
        for nm in range(1,11):
            edit_file.write('%s.\n'%nm)
        for item in container:
            edit_file.write('%s\n' %item)

使用此代码,我得到以下输出: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 01-29-2019 晚上 10 点 40 分

但我想得到这样的输出:

  1. 01-29-2019

  2. 晚上 10:40

3.

4.

5.

6.

7.

8.

9.

10.

【问题讨论】:

  • 你在哪个平台上? Windows 和 MacOS 上的换行符必须是 \r\n,而不仅仅是 \n,这可以解释文件中缺少换行符的原因。
  • 我正在使用 windows,现在只是更改它,但它仍然是相同的结果

标签: python list loops text


【解决方案1】:

您的代码有两个问题需要修复:

  1. 您正在使用两个循环,一个然后另一个,打印到您的文件。您需要组合这些循环,以便在同一循环迭代中知道要打印的数字和项目。您只有一次机会* 正确打印一行,因此您需要准备好该行所需的一切。
  2. 您正在前面的数字后面写一个换行符。这会阻止您在同一行上编写更多文本。相反,在一个 write() 调用中打印所有格式化的数据,最后使用 \r\n
with open(get_EveryDayTrans_folder_path()+file_name_to_write+".txt","a") as edit_file:
    nm = 1
    for item in container:
        edit_file.write('%s. %s\r\n' % (nm, item))
        nm += 1

*只有一次机会,除非您返回并再次编辑文件中的行。

【讨论】:

  • 非常感谢它运行良好,只需要更改迭代器变量名称 nm +=1
【解决方案2】:

有一个非常方便的 Python 函数,名为 zip 它需要两个可迭代对象(= list 和类似的东西)并返回元组,其中每个元组包含两者的一个元素。嗯,有点像拉链。 它经常用于并行迭代两个列表。 在您的情况下,这将是:

对于 nm,zip 中的项目(范围(1,11),容器):

然后你就可以打印 nm 和 item 我对 %s 风格不是很熟悉,所以我就写:

edit_file.write("{} {}".format(nm, item))

或者如果你使用 python 3.6 左右:

edit_file.write(f"{nm} {item}")

希望有帮助!

附言: 我刚刚看到您的第二列只有两个项目。 zip 函数在 shorter 迭代用完时停止。在您的情况下,您可能想要相反的情况。为此,itertools 模块中有 zip_longest

从 itertools 导入 zip_longest 对于 nm,zip_longest(range(1,11), container, fillvalue="") 中的项目:

这将返回:

nm, item = (0, container[0])

nm, item = (1, container[1])

nm, item = (2, "")

nm, item = (3, "")

等等

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多