我的代码:
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"], ...]
我希望x {/ p>形式为[['token1', 'token2', ...], ['token5', 'token6', ...], ...]
带有计数索引j的
x[j] = tokens
而非data = tokens
返回ValueError: cannot copy sequence with size 4 to array axis with dimension 1
tmp.csv具有以下形式:image,行数约为3,5万行。
我对python很新,所以我希望有人能帮助我。
答案 0 :(得分:0)
您的代码不会以任何方式修改x
,因此当您print(x)
时,您会获得与开头相同的列表。
您需要创建一个新列表,您将在其中存储标记化文本(即列表列表)。在第一个for循环之前添加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)