【问题标题】:Python string print formattingPython 字符串打印格式
【发布时间】:2013-06-22 14:26:05
【问题描述】:

我对编程和 Python 非常陌生。目前仍在开发我的第一个程序。大约一周前,我从这个论坛获得了一些帮助,但现在我被困在程序的另一部分,所以我需要一些善意的人再次帮助我:-)

在此示例中,我有 2 个文件 keyfile.dat,其中包含整个 ascii 字符集,每行一个字符。它们是实际的字符,而不是代码。

test.txt 像索引文件一样工作。每行包含一个数字,该数字指向keyfile.dat 中的行号,而keyfile.dat 又包含一个ascii 字符。下面的代码打印字母、逗号、问号等字母。但是它不打印空格、回车等。我想这是因为我在print 语句中使用了str.strip。如果我不使用该命令,除非读取回车符,否则不会在同一行打印每个字符,而是将每个字符打印在单独的行上。基本上,程序的这一部分应该打印它所指向的任何字符,不管它是什么,并完全按原样打印,就像它被输入一样。

---编辑--- 代码已删除

有什么想法吗? & 提前感谢您的任何回复。克林顿。

keyfile.dat 的示例内容

8
e
�
�
T
�
�
�
U
^V
�
^]
b
�
�
�
�
�
F

内容 test.txt:

14
203
163
38
52
163
38
188
231
11
38
231
242
208
74
163
38
163
231

使用我上面的代码输出:

T h i s , i s a t e s t ! O r i s i t ?

你可以看到单词之间没有空格,在 !应该有回车。

我个人认为是因为我的印刷声明。我需要使用 .strip ,否则从 keyfile.dat 读取的每个字符都会打印在新行上。据我所知,.strip 会删除空格、回车等。因此,如果我读取回车然后尝试打印它,它会被删除,因为我的打印功能使用 .strip。

【问题讨论】:

  • 你最好使用 with 语句:with open('keyfile.dat') as f: with open('test.txt') as i: 而不是 open/close

标签: python string printing formatting


【解决方案1】:

使用with 语句处理文件,因为它会自动为您关闭文件:

with open('keyfile.dat') as f, open('test.txt') as i:
    index = [int(line) for line in i)          #apply int() here
    keyfile = f.readlines()
    for ind in index:
        line = keyfile[ind]
        if len(line) > 1:
            print line[:-1],
        elif len(line) == 1:
            print line,

【讨论】:

  • 嗨 Ashwini,每行只打印 1 个字符,但仍不包括空格、回车符等。不过,感谢您的回复!克林顿。
  • @user2490853 请在问题正文中发布keyfiletest 文件。
  • 很抱歉,我第一次阅读时没有看到您的所有代码。我会再试一次:-)
  • Stills 每行打印一个字符,不包括空格、回车等...不知道为什么。我现在尝试了你的方法加上我自己的几个。总是得到相同的结果。
  • @user2490853 请在问题正文中发布一些示例数据和预期输出,目前尚不清楚您的数据是什么样的。
猜你喜欢
  • 2016-06-21
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
  • 2010-11-30
  • 1970-01-01
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多