无法打印已转换为字符串的整数

时间:2017-08-07 17:26:33

标签: string python-2.7 unicode

我正在尝试做一些非常简单的事情。我有点沮丧为什么我的代码不起作用,所以任何帮助都表示赞赏:)。

我的程序读入数据,然后创建一个字典,记录特定项目发生的次数(我正在使用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

我对str(要转换的整数)函数的理解是你应该能够传入一个整数并获得一个字符串表示!在转换之后,我能够在没有问题的情况下打印出这样的东西。

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

MTVHottest 60

KCAMexico 38

EXO 26

CD9 24

Unicode 19

Coders 18

AlonsoVillapandoTrendy 17

Unicode 14

Unicode 14

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

2 个答案:

答案 0 :(得分:0)

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

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

这不是输出到标准输出的方式。

使用print将是适当的方法:

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

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

答案 1 :(得分:0)

您获得的错误是由于: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))