java 读取csv文件里指定行列的值,比如读取第三行第二列的值。

java 读取csv文件里指定行列的值,比如读取第三行第二列的值。,第1张

java读取csv文件,按照指定格式:

import javaioIOException;

import javaniocharsetCharset;

import javautilArrayList;

import comcsvreaderCsvReader;

import comcsvreaderCsvWriter;

/

读取CSV文件

所谓"CSV",是Comma Separated Value(逗号分隔值)的英文缩写,通常都是纯文本文件。

可以看成数据库程序与电子表格之间一种中间通信文件,数据库可以导出。csv格式,excel也可以导入并打开。csv文件,例子如下

sj_mino1001jpg,715282,4FB55FE8,

sj_mino1002jpg,471289,93203C5C,

sj_mino1003jpg,451929,C4E80467,

/

public class CSVDeal{

public static void main(String[] args) {

try {

String[] stringList;

String csvFilePath = "C:\\Users\\Administrator\\Desktop\\20140227135936csv";

String sourceFileString= "C:\\Users\\Administrator\\Desktop\\testcsv";

CsvReader reader = new CsvReader(csvFilePath); //默认是逗号分隔符,UTF-8编码

CsvWriter writer = new CsvWriter(sourceFileString);

/

readRecord()判断是否还有记录,getValues()读取当前记录,然后指针下移

/

readerreadRecord();

writerwriteRecord(readergetValues()); //读取表头

/

逐行读取,以免文件太大

处理表头后面的数据,这里是在第12列数据统一加前缀"V"

/

while(readerreadRecord()){

stringList = readergetValues();

stringList[11] = 'V' + stringList[11];

writerwriteRecord(stringList);

}

readerclose();

writerclose();

}catch(Exception ex){

Systemoutprintln(ex);

}

}

}

#encoding: utf-8__author__ = 'DELL'import csvimport globimport datetimeimport sysimport osreload(sys)#中文错误syssetdefaultencoding( "utf-8" )'''@author likehua CSV批处理'''class BatchProcessCSV: def __init__(self,inputfolder="c:\\input\\",outputfolder="c:\\output\\"): selfinputfolder=inputfolder selfoutputfolder=outputfolder #批处理 def doBatchAction(self): startTime=datetimedatetimenow() print(u"开始处理") if (ospathexists(selfoutputfolder)==False): #pass osmakedirs(selfoutputfolder) list_dirs = oswalk(selfinputfolder) for root, dirs, files in list_dirs: #print i for file in files: otput=selfoutputfolder+file selfreadcsv2csv(selfinputfolder+file,otput) print(u"Running\n") endTime=datetimedatetimenow() print(u"处理完成,耗时:%f秒"%(endTime-startTime)seconds) #读取一个csv提取部分信息生成新的CSV def readcsv2csv(self,inputfile,outputfile): with open(inputfile, 'rb') as csvfile: o=open(outputfile,"wb") #解决csv浏览乱码问题 owrite('\xEF\xBB\xBF'); writer=csvwriter(o) #读取列 将字符串转为数组 column=csvfilereadline()split(",") #print(columnindex('App Release Date')) #print(column) writerwriterow(['Rank' ,'Category', 'Country ','App Name', 'Value', 'Unit' , 'App Release Date', 'Publisher Name', 'Company Name', 'Parent Company Name']) reader = csvreader(csvfile) #table = reader[0] #Rank, Category, Store, Device, Type, Country, Period,Version, App_ID, App_Name, Value, Unit, Value_Type, AppURL, App_IAP, App_Category, App_Device, Current_Price, App_Release_Date, Publisher_ID, Publisher_Name, CompanyName, ParentCompanyName, AppNameUnified, AppFranchise, UnifiedAppID, AppFranchiseID, CompanyID, ParentCompanyID for row in reader: lenth=len(row) if lenth>10: writerwriterow([row[columnindex("Rank")],row[columnindex("Category")],row[columnindex("Country")],row[columnindex("App Name")],row[columnindex("Value")],row[columnindex("Unit")],row[columnindex("App Release Date")],row[columnindex("Publisher Name")],row[columnindex("Company Name")],row[columnindex("Parent Company Name")]]) #processif __name__=="__main__": csvProcess=BatchProcessCSV("c:\\input\\","e:\\output\\") csvProcessdoBatchAction()

示例:

Testcsv

测试(1)csv

测试(2)csv

测试(3)csv

但每个文件中的内容都不同。

令牌点2和4内的文件的第1行和第2行,我能够识别文件。我想用这两个数据点重命名文件。

实施例

在Testcsv文件中,行记录1和2

H,投影,成本

1,食品,苹果,水果,55

在Test(1)csv行记录1和2

H,实际,成本

1,食品,苹果,水果,45

在Test(2)csv行记录1和2

H,投影,成本

1,租车,本田,自动,5500

在Test(3)csv行记录1和2

H,实际,成本

1,Car,Honda,Auto,6500

我想将以下文件重命名为

Testcsv = Fruit_Projectedcsv

测试(1)csv = Fruit_Actualcsv

测试(2)csv = Auto_Projectedcsv

测试(3)csv = Auto_Acutalcsv

现在我可以使用第2行和第4个令牌上的数据识别和重命名文件。我希望能够将第2行(令牌4)和第1行(令牌2)上的数据连接起来。以下是我目前的代码。

@echo off

for %%i in (csv) do (

 for /f "skip=1 token=4 delims=," %%j in ('findstr /B /I "^" "%%i"') do (

   ren "%%i" "%%jtemp_txt"

 )

)

ren temp_txt csv

1备份源文件

2此为powershell脚本,保存为ps1扩展名文件,右键单击脚本,以powershell运行

3未对powershell进行过设置的,可以管理员身份运行CMD,复制以下命令到命令提符 以解除脚本限制

powershell -c "set-executionpolicy unrestricted"

当然也可以管理员运行POWERSHELL,输入以下命令解除脚本限制

set-executionpolicy unrestricted

4 WIN10以下系统如出错,可能需要去微软官网下载补丁升级powershell

$SrcDir="D:\test";#源目录

$ar=2,6;#替换的列

dir $SrcDir -Filter csv|%{$str=$null;type $_FullName|%{

    $n=0;

    foreach($ch in $_split(",`t")){

        $n+=1;

        if($n -in $ar){$ch=$chReplace('TER','端子')}

        $str+=$ch+',';

     }

    $str=$strTrimEnd(',')+"`r`n";

    }

Out-File -FilePath $_FullName -InputObject $str -Encoding utf8;

}

这个可以通过通配符来实现,还是比较简单的。

新建文本文件,然后在其中输入命令:

move csv D:\temp

然后保存退出,将文件扩展名更换为bat。将文件拷贝到对应目录,双击运行即可。

也可以在move后面直接制定需要处理的路径。

以上就是关于java 读取csv文件里指定行列的值,比如读取第三行第二列的值。全部的内容,包括:java 读取csv文件里指定行列的值,比如读取第三行第二列的值。、python怎么实现CSV批处理,并把文件名和文件夹名添加到后两列、批处理读csv内容匹配1字段,再用另一字段来给文件名命名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9826819.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存