2017-08-07 70 views
0

我正在尝试做一些应该非常简单的操作。我有点沮丧,为什么我的代码无法正常工作,所以任何帮助表示赞赏:)。无法打印已转换为字符串的整数

我的程序读入数据,然后创建一个记录特定项目出现次数的字典(我正在使用Twitter数据并计算hashtag出现次数)。我要输出上微博,并发现一个不错的简单的方法,使用下列内容:

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

你只是想把它打印到控制台吗?任何你不是简单地做的原因:'print(big_key +“”+ str(big_value))' –

回答

0

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

输出和错误不需要内置的文件对象:任何物体是可以接受的,只要它有一个写()方法接受一个字符串参数。

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

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

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

谢谢 - 这工作。我甚至不想使用这种方法,因为我对stdout非常不熟悉,但是已经推荐了,所以我给了它一个镜头。 –

0

你得到特定的错误是从线路:

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

这不是事情的输出到标准输出

使用print将是一个适当的方式做到这一点:

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

,我们在您的代码示例其他一些奇怪的事情,使用big_key然后在报价"big_key"例如等。所以这可能不是你的错误和错误的结束。

+0

这将是一个打字错误哈。这不是与我的代码共享。感谢您指出了想法! –