【问题标题】:Can't print an integer that has been converted to a string无法打印已转换为字符串的整数
【发布时间】:2018-01-15 02:10:19
【问题描述】:

我正在尝试做一些应该非常简单的事情。我对为什么我的代码无法工作感到有点沮丧,因此感谢您提供任何帮助:)。

我的程序读入数据,然后制作一个字典,记录特定项目出现的次数(我正在使用 Twitter 数据并计算主题标签的出现次数)。我想输出热门推文,并找到了一种使用以下方法的简单方法:

def main():
    tweet_file = open(sys.argv[1])
    tweet_dic = lines(tweet_file) #function that makes my dictionary
    for i in range(0,10):
        big_key = max(tweet_dic, key = lambda i: tweet_dic[i])
        big_value = tweet_dic[big_key]
        sys.stdout = big_key + " " + str(big_value)
        del tweet_dic["big_key"]
    tweet_file.close()

我使用它时遇到的错误是AttributeError: 'str' object has no attribute 'write'

现在我已经使用print 将两个不同的值输出到终端中,它们可以毫无问题地放入两个不同的print 语句中,因为我不必连接或任何东西。我检查了这两种变量类型,不出所料,它们总是str & int

我对@9​​87654327@(integer to convert) 函数的理解是,你应该能够传入一个整数并返回一个字符串表示!转换后,我过去可以毫无问题地打印出类似的东西。

需要考虑的事情可能会将其丢弃 - big_key 有时可能是由 .encode('utf-8') 从 Unicode 转换而来的 string。否则,我的文件的输出(在单独的行上打印)如下所示:

MTVHottest 60

KCAMexico 38

EXO 26

CD9 24

Unicode 19

Coders 18

AlonsoVillapandoTrendy 17

Unicode 14

Unicode 14

有什么想法吗?提前致谢!

【问题讨论】:

  • 您只是想将其打印到控制台吗?任何你不只是做的理由:print( big_key + " " + str(big_value))

标签: string python-2.7 unicode


【解决方案1】:

你得到的错误是因为这个:https://docs.python.org/2/library/sys.html#sys.stdout

stdout 和 stderr 不必是内置文件对象:任何对象都是可以接受的,只要它有一个带有字符串参数的 write() 方法。

stdout 和 stderr 是写入数据的位置,您不应该将数据本身分配给 stdout,这就是您正在做的事情。

正如其他人所提到的,您可以将 stdout 分配到您想要的位置,然后使用 print 命令实际获取数据到那里。但是,如果您要做的只是将一行文本打印到文件中,那么为什么不直接打开文件并正常写入呢?

with open(tweet_file, 'w') as f:
    f.write(big_key + " " + str(big_value))

【讨论】:

  • 谢谢 - 这工作。我什至不想使用这种方法,因为我对 stdout 非常不熟悉,但有人推荐它,所以我试了一下。
【解决方案2】:

您得到的具体错误来自以下行:

sys.stdout = big_key + " " + str(big_value)

这不是输出到 stdout 的方式。

使用print 是合适的方法:

print(big_key + " " + str(big_value))

您的代码示例中还有一些其他奇怪的东西,例如在引号中使用big_key"big_key"。所以可能这不是你的错误和错误的结束。

【讨论】:

  • 那将是一个打字错误哈哈。这不与我的代码共享。感谢您指出想法!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-22
  • 2018-08-04
  • 1970-01-01
  • 2015-03-01
  • 1970-01-01
相关资源
最近更新 更多