2017-05-26 41 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