2017-05-26 67 views
0

我的代碼:記號化 - 字符串數組令牌

import numpy as np 
import pandas 
import codecs 
import re 

dataframe = pandas.read_csv("tmp.csv", delimiter=",") 
dataset = dataframe.values 
x = dataset[:,0:1] 
y = dataset[:,1] 

#j = 0 
for data in x: 
    text = str(data[0]) 
    tokenizer = re.compile('\W+') 
    tokens = tokenizer.split(text) 
    i = 0 
    for token in tokens: 
     tokens[i] = token.lower() 
     i += 1 
    data = tokens 
    #x[j] = tokens 
    #j += 1 
    print(data) 

print(x) 

雖然print(data)的形式爲['token1', 'token2', ...]
print(x)的形式[["text1"], ["text2"], ...]

我想要的形式[['token1', 'token2', ...], ['token5', 'token6', ...], ...]對於x

x[j] = tokens代替具有計數指數j的data = tokens返回ValueError: cannot copy sequence with size 4 to array axis with dimension 1

tmp.csv有這種形式:image約3,5萬行。

我相對比較新的python,所以我希望任何人都可以幫助我。

+1

請[編輯]你的問題,包括CSV文件的內容 –

回答

0

您的代碼不會以任何方式修改x,因此您在開始時得到的列表相同,即print(x)

您需要創建一個新的列表,您將在其中存儲標記文本(即列表列表)。在第一個循環之前添加x_tokens = [],然後將每個標記列表附加到x_tokens.append(tokens)

import numpy as np 
import pandas 
import codecs 
import re 

dataframe = pandas.read_csv("tmp.csv", delimiter=",") 
dataset = dataframe.values 
x = dataset[:,0:1] 
y = dataset[:,1] 

x_tokens = [] 

for data in x: 
    text = str(data[0]) 
    tokenizer = re.compile('\W+') 
    tokens = tokenizer.split(text) 
    i = 0 
    for token in tokens: 
     tokens[i] = token.lower() 
     i += 1 

    x_tokens.append(tokens) 

    print(tokens) 

print(x_tokens) 
+0

當然哦....我沒有想到的是數據是臨時變量的事實。謝謝! – KevTu