Python 2.x - 操作元组并与str类型连接

时间:2017-04-24 15:07:09

标签: string python-2.7 tuples

我最近编写了一个代码来处理文本分析,但是在python中操作某些数据类型时遇到了一些困难。

我将粘贴我操作此代码的代码片段,很快我会解释并提出疑问,如果他们能帮助我会感激不尽。

def classificaTexto(nbc, tweet):

    #textoProcessado = preProcessamentoText(tweet)
    for features in tweet:
        result = nbc.classify(extracaoCaracteristicas(features[0]))
        #return result
        if (result == 4) :
            print 'Crime não categorizado - ' + str(tuple(features))
        elif (result == 1):
            print 'Roubo - ' + str(tuple(features))
        elif(result == 2):
            print 'Homicídio - ' + str(tuple(features))
        elif(result== 3):
            print 'Tráfico - ' + str(tuple(features))
        else :
            print 'Não representa um crime - ' + str(tuple(features))


# Main function
if __name__ == '__main__':
    #Load the files with text - Both are csv    
    carregarTextos()
    test_set()

    # Extract the feature vector of all tweets in one go
    conjuntoTreino = nltk.classify.util.apply_features(extracaoCaracteristicas, tweets)

    # Train the classifier
    NBClassifier = nltk.NaiveBayesClassifier.train(conjuntoTreino)
    classificaTexto(NBClassifier, testset)

现在解释:

classificaTexto(NBClassifier, testset)中,testset是我读取其中一个csv文件并将其转换为特征向量的变量。这种转换的结果是一个元组,结果如下:

(['multas', 'caras', 'partir', 'multas', 'caras', 'partir', 'novembro', 'novos', 'previstos', 'partir', 'cujo', 'valor', 'multa', 'atual', 'multas', 'serem', 'pagas', 'grave', 'atuais', 'multas', 'cobradas', 'consideradas', 'leves', 'reajustadas', 'atuais', 'partir', 'novembro', 'reajustados', 'valores', 'multas', 'aplicadas', 'motoristassuspeitos', 'dirigir', 'recusarem', 'teste', 'nesse', 'multa', 'motorista', 'suspensa', 'prazo', 'brasil'], '5')

不久之后,执行方法classificaTexto。正如你在上面看到的那样,我阅读了元组然后进行打印,其中我有一个文本(str)和元组。这里的目的是说一种与元组中包含的文本相关的感觉。但结果如下:

Não representa um crime - (['multas', 'caras', 'partir', 'multas', 'caras', 'partir', 'novembro', 'novos', 'previstos', 'partir', 'cujo', 'valor', 'multa', 'atual', 'multas', 'serem', 'pagas', 'grave', 'atuais', 'multas', 'cobradas', 'consideradas', 'leves', 'reajustadas', 'atuais', 'partir', 'novembro', 'reajustados', 'valores', 'multas', 'aplicadas', 'motoristassuspeitos', 'dirigir', 'recusarem', 'teste', 'nesse', 'multa', 'motorista', 'suspensa', 'prazo', 'brasil'], '5')

我的疑问和怀疑如下:

1 - 下面这个是与元组交互的最佳方式吗?

for features in tweet:
        result = nbc.classify(extracaoCaracteristicas(features[0]))

2 - 我用来连接str类型和元组的形式是否正确? print 'Tráfico - ' + str(tuple(features)

1 个答案:

答案 0 :(得分:1)

关于点n°2: 不,你连接的方式不是你应该获得你期望的方式。 这应该工作: print 'Trafico - ' + ', '.join(features[0])