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 offfor %%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 unrestricted4 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字段,再用另一字段来给文件名命名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)