您的位置 首页 > 数码极客

【txt是什么格式的文件】Python。txt文件读取和数据处理综述

1、处理包含数据的文件。

最近使用python读取txt文件时,在计算两种np.narray()类型的数组时出现了以下错误的小问题:

typeerror : u func ' subtract ' did not contain a loop with signature matching types dtype(' u3 ')dtype(' u3 ')

1作为python新手,遇到这个问题后花了很多时间在网上找了很多大神写的例子,终于解决了。

摘要如下:

(1)这个问题是为了计算两个数组之间的差异,但数组中的元素不是数据类型(float、int等),而是str类型。

(2)解决方法:在向空数组添加数据的同时,强制将每个数据转换为float类型。

如果将C(dataSet[i][:-1])更改为c([float(tk)for tk in dataSet[I][:-),则

现在,使用python读取txt文件的过程总结如下:

python版本如下

(1)存储在Func文件中的函数定义:

From numpy import *

Import随机

#读取数据函数并返回列表类型培训和测试数据集

Def load data(文件名):

TrainingData=[]

TestData=[]

with open(filename)as txt data :

Lines=()

For line in lines:

Linedata=line.strip()。删除split(',')#空格和逗号','

Ifrandom.random () 0.73360 #数据集拆分比

(lineData) #培训数据集

Else:

(lineData) #测试数据集

Return trainingData、testData、测试数据

#输入数据分为列表类型、数据集分区、功能和标签两部分,返回数据为np.narray类型

Def splitData(dataSet):

Character=[]

标签=[]

For I in range(len(dataSet)):

c([float(tk)for tk in dataset[I][:-1])

Label.append(dataSet[i][-1])

Return array (character)、array (label)

1234567891011213141516171819202232425(2)实现两个数组之间的减法,并将其存储在main.py文件中。

# _ _ author _ _==' qustl _ 000 '

#-*-代码: utf-8-*-

Import numpy as NP

Import Function

FileName='1.txt '

Training data,testdata=func(文件名)

Trainingcharacter,training label=func(training data)

Test character、testlabel=func(测试数据)

Diff1=np.tile (testcharacter [0],(len (trainingcharacter),1)-trainingcharacter

Print('测试数据集的数据,扩展到与培训数据集相同的维:')

Prin (testcharacter [0],(len (trainingcharacter),1))

Print(“培训数据集:”)

打印(training character)

Print('时差后的结果:')

打印(diff1)

123456

>7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • (3)运行结果:

    测试数据集的一条数据,扩充到与训练数据集同维:

    [[ 1.5 60. ]

    [ 1.5 60. ]

    [ 1.5 60. ]

    [ 1.5 60. ]

    [ 1.5 60. ]

    [ 1.5 60. ]

    [ 1.5 60. ]

    [ 1.5 60. ]

    [ 1.5 60. ]

    [ 1.5 60. ]

    [ 1.5 60. ]

    [ 1.5 60. ]

    [ 1.5 60. ]]

    训练数据集:

    [[ 1.5 40. ]

    [ 1.5 50. ]

    [ 1.6 40. ]

    [ 1.6 50. ]

    [ 1.6 60. ]

    [ 1.6 70. ]

    [ 1.7 60. ]

    [ 1.7 70. ]

    [ 1.7 80. ]

    [ 1.8 60. ]

    [ 1.8 80. ]

    [ 1.8 90. ]

    [ 1.9 90. ]]

    作差后的结果:

    [[ 0. 20. ]

    [ 0. 10. ]

    [ -0.1 20. ]

    [ -0.1 10. ]

    [ -0.1 0. ]

    [ -0.1 -10. ]

    [ -0.2 0. ]

    [ -0.2 -10. ]

    [ -0.2 -20. ]

    [ -0.3 0. ]

    [ -0.3 -20. ]

    [ -0.3 -30. ]

    [ -0.4 -30. ]]

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    数据集如下:

    1.5,40,thin

    1.5,50,fat

    1.5,60,fat

    1.6,40,thin

    1.6,50,thin

    1.6,60,fat

    1.6,70,fat

    1.7,50,thin

    1.7,60,thin

    1.7,70,fat

    1.7,80,fat

    1.8,60,thin

    1.8,70,thin

    1.8,80,fat

    1.8,90,fat

    1.9,80,thin

    1.9,90,fat

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    2、处理文本文件,如情感识别类的文件

    在进行文本的情感分类时,从电影评论数据集网站上下载数据集后,发现数据集中存在许多不需要的符号。截取部分包含多余字符的数据如下:

    下载数据集后,所有txt文件存放在两个文件夹:“neg”(包含消极评论)和“pos”(包含积极地评论)中。

    两者的存放目录如下:“F:\Self_Learning\机器学习\python\Bayes\review_polarity\txt_sentoken”。后面需要用到文件路径,此路径可根据自己存放目录修改。

    主要涉及到的python操作有:多余字符的删除、文件夹中多文件的操作。

    2.1 多余字符的删除

    首先,我们要删除多余的符号,获得干净的数据。

    经过查找资料,知道删除一条文本数据中不需要的符号,可以通过re.sub(chara,newChara,data)函数实现,其中chara是需要删除的字符,newChara是删除字符后相应位置的替换字符,data是需要操作的数据。比如下面的代码,指的是删除lines中包含的前面列出的字符,并用空白替换:

    lineString = re.sub("[\n\.\!\/_\-$%^*(+\"\')]+|[+—()?【】“”!:,;.?、~@#¥%…&*()0123456789]+", " ", lines)

    • 1

    2.2 python对多文件的操作

    下面的程序中,pathDirPos指的是所有积极评论的txt文件所在的目录,在此指的是“F:\Self_Learning\机器学习\python\Bayes\review_polarity\txt_sentoken\pos”。child就是获得的每个txt文件全名。

    for allDir in pathDirPos:

    child = os.('%s' % allDir)

    • 1
    • 2

    2.3 电影评论数据集预处理

    下面给出对于电影评论数据集的预处理程序().

    '''获取数据,并去除数据中的多余符号,返回list类型的数据集'''

    def loadData(pathDirPos,pathDirNeg):

    posAllData = [] # 积极评论

    negAllData = [] # 消极评论

    # 积极评论

    for allDir in pathDirPos:

    lineDataPos = []

    child = os.('%s' % allDir)

    filename = r"review_polarity/txt_sentoken/pos/" + child

    with open(filename) as childFile:

    for lines in childFile:

    lineString = re.sub("[\n\.\!\/_\-$%^*(+\"\')]+|[+—()?【】“”!:,;.?、~@#¥%…&*()0123456789]+", " ", lines)

    line = lineS(' ') #用空白分割每个文件中的数据集(此时还包含许多空白字符)

    for strc in line:

    if strc != "" and len(strc) > 1: #删除空白字符,并筛选出长度大于1的单词

    lineDa(strc)

    (lineDataPos)

    # 消极评论

    for allDir in pathDirNeg:

    lineDataNeg = []

    child = os.('%s' % allDir)

    filename = r"review_polarity/txt_sentoken/neg/" + child

    with open(filename) as childFile:

    for lines in childFile:

    lineString = re.sub("[\n\.\!\/_\-$%^*(+\"\')]+|[+—()?【】“”!:,;.?、~@#¥%…&*()0123456789]+", " ", lines)

    line = lineS(' ') #用空白分割每个文件中的数据集(此时还包含许多空白字符)

    for strc in line:

    if strc != "" and len(strc) > 1: #删除空白字符,并筛选出长度大于1的单词

    lineDa(strc)

    negAllDa(lineDataNeg)

    return posAllData,negAllData

    '''划分数据集,将数据集划分为训练数据和测试数据,参数splitPara为分割比例'''

    def splitDataSet(pathDirPos,pathDirNeg,splitPara):

    trainingData=[]

    testData=[]

    traingLabel=[]

    testLabel=[]

    posData,negData=loadData(pathDirPos,pathDirNeg)

    pos_len=len(posData)

    neg_len=len(negData)

    #操作积极评论数据

    for i in range(pos_len):

    i()<splitPara):

    (posData[i])

    (1)

    else:

    (posData[i])

    (1)

    for j in range(neg_len):

    i()<splitPara):

    (negData[j])

    (0)

    else:

    (negData[j])

    (0)

    return trainingData,traingLabel,testData,testLabel

    关于作者: luda

    无忧经验小编鲁达,内容侵删请Email至wohenlihai#qq.com(#改为@)

    热门推荐