精华内容
参与话题
问答
  • 由于自己的数据集比较特殊,直接使用python将pkl文件转csv文件后规格都会乱套。这里提供几个数据转化的思路和方法。 1.首先将pkl转化为txt文件: import pickle import pandas as pd f = open(‘ingr_map.pkl’,‘rb...

    在上一篇文章中已将讲述了怎样打开pkl文件
    由于自己的数据集比较特殊,直接使用python将pkl文件转csv文件后规格都会乱套。这里提供几个数据转化的思路和方法。
    1.首先将pkl转化为txt文件:

    import pickle
    import pandas as pd
    f = open(‘ingr_map.pkl’,‘rb’)
    data = pickle.load(f)
    pd.set_option(‘display.width’,None)
    pd.set_option(‘display.max_rows’,None)
    pd.set_option(‘display.max_colwidth’,None)
    print(data)
    inf=str(data)
    ft = open(‘test1.csv’, ‘w’)
    ft.write(inf)

    其中pd.set_option方法是会将读取的pkl文件显示全,由于我的pkl文件相对来说比较大,一万多列,行里面也有很多字符,如果不使用这三行代码,显示出的数据集是不全面的,按照上一篇文章的打开方式,控制台回显示省略号,数据集放入txt文件的时候也会不全面。

    2.再将txt转化为csv
    1)网上直接有很多在线转换工具,如果数据集不是很大,可以使用并且节省时间。
    2)但是如果转化后格式还是错误,可以使用代码转化。
    网上页有很多关于txt与csv转化的,但是由于这个数据集比较特殊,处理出来之后的格式里面没有任何的逗号和分隔符号,所以我用代码转出后格式也是非常乱套,那么这里推荐使用第三种方法,非常快而且不会转错。
    3)使用excel进行转换。打开excel,左下有一个打开,选择你的txt文件,这里会出现一个导入格式的选项,我个人选择的是固定间距,这样你可以直接在下面的栏里手动你的格式。(可以网上查询txt导入excel)。导入之后另存为的时候选择格式csv就可以存了。

    展开全文
  • Txt转CSV,打开乱码

    千次阅读 2017-04-12 23:07:28
    打开 UTF-8 编码的 CSV 文件的方法:1) 打开 Excel 2) 执行“数据”->“自文本”3) 选择 CSV 文件,出现文本导入向导4) 选择“分隔符号”,下一步5) 勾选“逗号”,去掉“ Tab 键”,下一步,完成6)在“导入数据”...

    打开 UTF-8 编码的 CSV 文件的方法:

    1) 打开 Excel

    2) 执行“数据”->“自文本”

    3) 选择 CSV 文件,出现文本导入向导

    4) 选择“分隔符号”,下一步

    5) 勾选“逗号”,去掉“ Tab 键”,下一步,完成

    6)在“导入数据”对话框里,直接点确定

    展开全文
  • txt转CSV格式文件python

    2019-12-01 18:59:28
    #-*-coding:utf-8 -*- import csv with open('file.csv', 'wb') as csvfile: spamwriter = csv.writer(csvfile, ... # 读要转换的txt文件,文件每行各词间以@@@字符分隔 with open('C:\\Users\\1701\Desktop\...
    #-*-coding:utf-8 -*-
    
    import csv
    with open('file.csv', 'wb') as csvfile:
        spamwriter = csv.writer(csvfile, dialect='excel')
        # 读要转换的txt文件,文件每行各词间以@@@字符分隔
        with open('C:\\Users\\1701\Desktop\\20191122 104216.txt', 'rb') as filein:
            for line in filein:
                line_list = line.decode().strip().split(",")
                print(line_list[0:5])
                A=pd.DataFrame(line_list)
                print(A.head())
                A.to_csv('C:\\Users\\1701\Desktop\\file.csv')

     

    展开全文
  • 功能:python脚本,从csv文件的某一行开始,读取指定列的内容,并存入一个新的csv文件 要求输入命令行:python extract.py 1.csv 2.csv --start=2 2,3,4 表示从1.csv从第2行开始读取2,3,4列。如果--start省略,则...

    功能:python脚本,从csv文件的某一行开始,读取指定列的内容,并存入一个新的csv文件

    要求输入命令行:python extract.py 1.csv 2.csv --start=2 2,3,4 表示从1.csv从第2行开始读取2,3,4列。如果--start省略,则表示从第一行开始读 --start=2,4表示从第2行读到第4行

    python extract.py 1.csv 2.csv --start=2 --x=2 --y=3 4,5 表示2,3列为x,y坐标,并对不在国内的坐标进行坐标转换 ,写入csv前两列。 

    读取列[2,3]与[3,2]不同,数组里哪个列在前面就把谁写在前列。如果有x,y参数,则x,y列放在最前面。

    若用户在命令行没有输入参数,或者参数不够,则显示脚本的用法(可用try -except实现)

    方法一:用pandas包实现

    将txt文件转为csv文件,分隔符 支持逗号、空格、|、TAB、分号,等

    # -*- coding: utf-8 -*-
    
    """
    分隔符 支持逗号、空格、|、TAB、分号,等
    将txt转为csv文件
    """
    
    import csv
    import sys
    import re
    
    def read_file(filename):#从txt中读取内容存入list c
        f=open(filename,'r')
        txt=f.read()
        f.close()
        str1=txt.split("\n")#首先总有换行符的,所有这个不变
        temp=[]
        for i in range(len(str1)):
            a=re.split('[,;| \t]',str1[i])#支持分隔符,;| tab以及空格
            b=[]
            for j in range(len(a)):
                b.append(a[j])
            temp.append(b)
        return temp
        
    def write_file(outputfile,temp):
        #python3以上写入csv函数发生变化,所以加个版本判断
        if sys.version>='3':
            with open(outputfile,'w',newline='') as csvfile:
                writer=csv.writer(csvfile)
                for row in temp:
                    writer.writerow(row)
        else:
            with open(outputfile,'wb') as csvfile:
                writer=csv.writer(csvfile)
                for row in temp:
                    writer.writerow(row)
    
    txt=read_file("temp.txt")
    write_file("ty.csv",txt)

    在上述代码读取写入csv代码上增加功能,写入前,判断某几列是否符合某标准,若不符合,转换后再写入。读取列[2,3]与[3,2]不同,数组里哪个列在前面就把谁写在前列。如果有x,y参数,则x,y列放在最前面。

                                                            程序说明
    ==============================================================================================================================
        """
        读取csv or txt文件的指定行、列并写入csv文件
        python extract.py inputfile outputfile --start --x --y startcols
        :param inputfile:可以是csv、txt文件路径。如果是txt文件,则脚本首先将其写入同名csv文件,支持分隔符,;| tab以及空格
        :param outputfile:输出csv文件路径
        :param --start:是一个列表,2,4表示读inputfile的第2-4行,2表示读第2行到最后,省略这个参数表示从头行读到尾
        :param --x:可省略参数--y参数成对出现。--x=3 --y=4表示第3、4列分别为经纬度坐标,读取这两列,并对国内坐标进行转换后存入输出csv文件
        :param --y:可省略参数  
        :param startcols:是一个列表,2,4表示读inputfile的第2、4列,2表示读第二列,参数不可省   
        """
    # -*- coding: utf-8 -*-
    """
    Created on Tue Mar 26 19:10:57 2019
    """
    
    from __future__ import division
    import pandas as pd
    import numpy as np
    import sys
    import getopt
    import math
    import warnings
    import csv
    import re
     
    warnings.filterwarnings("ignore") #忽略警告信息
     
    x_pi = 3.14159265358979324 * 3000.0 / 180.0
    pi = 3.1415926535897932384626  # π
    percent=[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1]
     
    def read_file(filename):
        """
        从txt文件中读取内容存入list temp
        支持分隔符,;| tab以及空格
        :param filename:txt文件路径
        """
        f=open(filename,'r')
        txt=f.read()
        f.close()
        str1=txt.split("\n")#首先总有换行符的,所有这个不变
        temp=[]
        for i in range(len(str1)):
            a=re.split('[,;| \t]',str1[i])#支持分隔符,;| tab以及空格
            b=[]
            for j in range(len(a)):
                b.append(a[j])
            temp.append(b)
        return temp
        
    def write_file(outputfile,temp):
        """
        将txt内容写入csv文件
        :param outputfile:输出文件路径
        :param temp:从txt文件中读取的内容list
        """
        #python3以上写入csv函数发生变化,所以加个版本判断
        if sys.version>='3':
            with open(outputfile,'w',newline='') as csvfile:
                writer=csv.writer(csvfile)
                for row in temp:
                    writer.writerow(row)
        else:
            with open(outputfile,'wb') as csvfile:
                writer=csv.writer(csvfile)
                for row in temp:
                    writer.writerow(row)
     
    def out_of_china(lng, lat):
        """
        判断是否在国内,不在国内不做偏移
        :param lng:经度
        :param lat:纬度
        :return:True表示不在国内
        """
        if lng < 72.004 or lng > 137.8347:
            return True
        if lat < 0.8293 or lat > 55.8271:
            return True
     
    def gcj02tobd09(lng, lat):
        """
        火星坐标系(GCJ-02)转百度坐标系(BD-09)
        谷歌、高德——>百度
        :param lng:火星坐标经度
        :param lat:火星坐标纬度
        :return:转换后坐标
        """
        z = math.sqrt(lng * lng + lat * lat) + 0.00002 * math.sin(lat * x_pi)
        theta = math.atan2(lat, lng) + 0.000003 * math.cos(lng * x_pi)
        bd_lng = z * math.cos(theta) + 0.0065
        bd_lat = z * math.sin(theta) + 0.006
        return [bd_lng, bd_lat]
     
    def trans(df,a,startrow,outputfile):
        """
        判断x,y列坐标是否在国内,若在国内则进行坐标转换,存入csv
        :param df:读取的csv指定行、列内容
        :param a:命令行--x、--y的参数
        :param startrow:命令行指定列的参数
        :param outputfile:输出文件路径
        """
        tmp=[]
        for i in range(len(percent)):
            tmp.append(int(len(df)*percent[i]))  #为了打印转换进度
     
        for i in range(len(df)):
            x1=float(df[a[0]][i+startrow[0]])#获取经度坐标
            y1=float(df[a[1]][i+startrow[0]])#获取纬度坐标
            f=out_of_china(x1,y1)      #判断是否在国内
            if f==None:                #在国内则进行坐标转换
                x2,y2=gcj02tobd09(x1, y1)
                df[a[0]][i+startrow[0]]=x2
                df[a[1]][i+startrow[0]]=y2
            for index,k in enumerate(tmp): #屏幕打印坐标转换进度
                if (i+1) ==k:
                    p="%.2f%%" % ((index+1) * 10)
                    print('The coordinate transformation has completed by '+p)
        df.to_csv(outputfile,index=False,header=None,sep=',')   
     
    def help():#输出脚本功能
        print(unicode('===============================================================================\n \
                                    程序说明\n \
    ===============================================================================\n \
      读取csv or txt文件的指定行、列并写入csv文件\n \
      命令行输入:python extract.py inputfile outputfile --start --x --y startcols\n \
      :inputfile:可以是csv、txt文件路径。若是txt文件,则脚本首先将其写入同名csv文件,支持分隔符,;| tab以及空格\n \
      :outputfile:输出csv文件路径\n \
      :--start:是列表,2,4表示读inputfile的第2-4行,2表示读第2行到最后,省略这个参数表示从头行读到尾\n \
      :--x:可省略参数--y参数成对出现。--x=3 --y=4表示第3、4列分别为经纬度坐标,读取这两列,并对国内坐标进行转换后存入输出csv文件\n \
      :--y:可省略参数\n \
      :startcols:是列表,2,4表示读inputfile的第2、4列,2表示读第二列,参数不可省\n \
    ===============================================================================',encoding="utf-8"))
        
        
    def main(argv):
        startcols=[]             #存放--start参数
        startrows=[]             #存放列参数
        xy=[]                    #存放--x、--y参数
        try:  
            inputfile=sys.argv[1]#读取的csv文件路径
            outputfile=sys.argv[2]#存储的csv文件路径
            ass=sys.argv[3]   #无用参数,只是为了确保命令行至少有3个参数
            opts,args=getopt.getopt(argv,"hu:p",["start=","x=","y="])#这里就是为了能够读取命令行的--start,--x,--y参数
        except:#输出脚本用法
            help()
        #如果输入的第一个参数是txt文件,则先将其转为csv文件。
        if inputfile[-3:]=='txt':
            txt=read_file(inputfile)
            name=inputfile[:-4]
            inputfile=str(name+'.csv')
            write_file(inputfile,txt)        
                   
        #获取命令行参数
        for opt,arg in opts:
            if opt in "--start":
                temp1=str(arg)
                arr1=[]
                arr1=temp1.split(',')
                for i in range(len(arr1)):
                    startrows.append(int(arr1[i])-1)
    
            elif opt in "--x":
                xcol=int(arg)-1
                startcols.append(xcol)
            elif opt in "--y":
                ycol=int(arg)-1
                startcols.append(ycol)
        xy=startcols[:] #深复制
        if len(startrows)==0:#如果不设--start参数值,默认从第一行开始
            startrows=[0]
         #取命令行列参数,去掉逗号分隔符
        if(len(sys.argv)>3):
            temp2=str(sys.argv[-1])
            ar=[]
            ar=temp2.split(',')
            for i in range(len(ar)):
                startcols.append(int(ar[i])-1)
    
        df=pd.read_csv(inputfile,header=None,usecols=startcols)#获取usecols指定列
        #使列按数组值顺序读取
        b=np.arange(len(startcols))#数组a中值得索引
        for i in range(len(startcols)):
            bi=df.pop(startcols[i])
            df.insert(b[i],startcols[i],bi)   
    
        #获取startrows指定行
        if len(startrows)==1:
            df1=df.loc[startrows[0]:]
        else:
            df1=df.loc[startrows[0]:startrows[1]]
        #若命令行没有--x、--y参数,则直接将截取内容存入csv文件。
        if len(xy)==0:
            df1.to_csv(outputfile,index=False,header=None,sep=',')
        else:
            trans(df1,xy,startrows,outputfile)#坐标转换+写入csv文件    
            
    if __name__=="__main__":
        main(sys.argv[3:])

    方法二:

    用csv包来做

    enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

    
    enumerate(sequence, [start=0])返回 enumerate(枚举) 对象。
    
    sequence -- 一个序列、迭代器或其他支持迭代对象。
    start -- 下标起始位置。
    >>>seq = ['one', 'two', 'three']
    
    >>> for i, element in enumerate(seq):
    
               print i, element
    
    ...
    
            0 one
    
            1two
    
            2 three

    下面的代码没有加入命令行参数,将方法一的命令行部分代码直接套过来即可。

    import csv
    
    start=2#开始行
    colls=[1,2,3]#列
    inputfile='gy.csv'
    outputfile='gy1.csv'
    csv_file=csv.reader(open(inputfile,'r'))
    
    temp=[]
    print("==================")
    for i,line in enumerate(csv_file):
        if i>=start-1:    
            cols=[]
            for j,coll in enumerate(line):
                if j in colls:
                    cols.append(coll)
            temp.append(cols)
    print(temp)
    print("cols")
    csv_write=open(outputfile,'a',newline='')
    writer=csv.writer(csv_write)
    for row in temp:
        writer.writerow(row)

    用字典给数组赋值,修改字典键值

    import pandas as pd
    import numpy as np
    
    def insert_sort(lists):#列表排序
        lists_1=lists[:]#深复制
        count=len(lists_1)
        for i in range(1,count):
            key=lists_1[i]
            j=i-1
            while j>=0:
                if lists_1[j]>key:
                    lists_1[j+1]=lists_1[j]
                    lists_1[j]=key
                j-=1
        return lists_1
        
    def dic(arr1,arr2):
        c={}
        for k,v in enumerate(arr1):#前面的是索引,后面是值
            c[k]=v  #给字典赋值
            
        print(c)
        lt=[]
        for k,v in enumerate(arr2):#前面的是索引,后面是值
            d={}
            d[k]=v  #给字典赋值
            lt.append(d)
    
        for k,v in c.items():
            for i in range(len(lt)):
                if v==lt[i].values()[0]:
                    lt[i][k]=lt[i].pop(lt[i].keys()[0])
        return lt
    
    arr1=[10,2,5,3]
    arr2=insert_sort(arr1)
    lt=dic(arr1,arr2)
    print(lt)#数组字典

     

    展开全文
  • python3 txt转csv|tsv

    千次阅读 2018-05-08 22:44:24
    #TSV为用制表符tab分隔的文本文件。 CSV为用逗号,分隔的文本文件。#在open的时候加上 ...csv(1)Python: 3行代码实现txt文件转csv代码:import numpy as np import pandas as pd txt = np.loadtxt('file.txt') tx...
  • txt转csv文件,隔行出现空行

    千次阅读 2018-09-13 15:24:29
    在用csv.writer写入文件的时候发现中间有多余的空行。 最早打开方式只是‘w’,会出现多余的空行,网上建议使用binary形式‘wb’打开可以解决问题:python正常写入文件的时候,每行的结束默认添加'n’,即0x0D,而...
  • 在上文中,我们使用android收集到的数据存放在TXT文件中,一帧格式如下:(暂时去除magnetic数据信息) [(device:F8:F0:05:F3:67:4C rssi:-90 floorNum:1 locationNum:1), (device:F8:F0:05:F3:67:D5 rssi:-80 ...
  • 点云txt格式转csv格式

    2019-03-06 10:40:33
    点云txt格式转csv格式,这是Python代码,自己修改一下输入路径就可以使用了,如果使用过程中有问题的话,可以在下面留言,我看到了会回答大家的。
  • python3 txt文本转csv

    千次阅读 2018-05-04 18:39:32
    把每一行成一个list,然后直接写入csv文件即可,有表头的把表头转换成list写入就行。这么一个简单的功能我找半天也找不到能用的代码,写博客的人不知道怎么想的? import csv if __name__ == "__main__": ...
  • acgis txt或者csv文件point,批量转换非常实用。
  • TXT转换成CSV

    千次阅读 2019-05-05 20:46:41
    import re import pandas as pd file = open("C:/Users/zZ/Desktop/evsam2/evaltask2_sample_data/en_sample_data/sample.positive_short.txt","r") texts = [] for line in file: text = [] index = line.f...
  • txt文件转换csv格式(自用

    千次阅读 2010-06-04 10:35:00
    #include #include #include using namespace std; int main() { ifstream input;... string filename = "demo data.txt"; input.open(filename.c_str(), ios::in); filename = "copy " +
  • txtcsv格式转换成asc

    千次阅读 2020-01-01 19:45:56
    汽车行业采集报文,常常遇到采集的报文格式是txtcsv的,这种格式的报文如果直接分析效率低费时间,可是又无法用CANoe或者CANalyzer等软件直接读取分析,所以自己写了个软件可以将txt或者csv格式的报文转换成asc...
  • awk将txt转换为csv

    千次阅读 2018-10-12 17:48:57
    从mysql的表中导出来的txt数据格式:(mysql -e "select * from table_name;") [admin@93a17e41-ee44-4c53-8432-b196632b8891 ~]$ head choushu.log 1 13 56154 49817 ChargeMain_Shortcut 56154...
  • shell将txt转换为csv

    2018-10-11 18:15:47
    shell将txt转换为csv: cat aa.txt | tr -s '[:blank:]' ',' > bb.csv 转载于:https://blog.51cto.com/yangzhiming/2298898
  • python读取 txt转换成csv

    千次阅读 2016-07-29 17:02:58
    # -*- coding: utf-8 -*- """ Created on Fri Jul 29 15:49:06 2016 @author: user """ import os #从文件中读取某一行 linecache.checkcache可以刷新cache ,linecache可以缓存某一行的信息 import linecache ...
  • python将txt转换为csv

    千次阅读 2015-07-28 11:29:53
    # -*-coding:utf-8-*- import sys import csv import os import argparse reload(sys) sys.setdefaultencoding("utf-8") ... parser = argparse.ArgumentParser(description="Change the txt file to csv
  • Python .txt转.csv

    2020-02-21 13:35:10
    import csv
  • 0719 txt文件转csv method1 a=list(csv.reader(open('a.txt', 'r'), delimiter='\t')) df=pd.DataFrame(a) df.to_csv("res.csv") method2 with open('a.txt', 'r') as infile, open('t.csv', 'w') as outfile: ...
  • Python学习笔记——txt文件转csv文件

    千次阅读 2018-05-19 14:32:22
    import numpy as np import pandas as pd txt = np.loadtxt('data1.txt') txtDF = pd.DataFrame(txt) txtDF.to_csv('file1.csv', index=False)
  • json转换xml、txt生成csv

    2020-06-23 17:24:40
    import os import glob import pandas as pd import xml.etree.ElementTree as ET ...def xml_to_csv(path): xml_list = [] for xml_file in glob.glob(path + '/*.xml'): tree = ET.parse(xml_file...
  • CSV 转TXT

    千次阅读 2011-01-12 16:13:00
    public static void specialChar(String filePath,int starRow) throws Exception { BufferedReader br = null; File f = new File(filePath); String fileName = f.getName();...
  • txt格式转csv格式 方法一:代码转换(这种方法转成csv文件之后,第一行为自动生成的表头) #截取txt文件 def cut_front(): dt=open('./data/data_train_new_2/2_background_row.txt',mode='a+') for i in ...
  • Python: 3行代码实现txt文件转csv

    万次阅读 热门讨论 2016-12-22 23:26:44
    在学习其他人代码的过程中,需要用到txt转csv,于是网上搜索了相关代码。但都过于复杂,咨询了身边朋友后,了解只需三行代码。import numpy as np import pandas as pd txt = np.loadtxt('file.txt') txtDF = pd....

空空如也

1 2 3 4 5 ... 20
收藏数 605
精华内容 242
关键字:

txt转csv