导航:首页 > 版本升级 > 读取csv文件识别不了换行符

读取csv文件识别不了换行符

发布时间:2021-04-11 18:32:12

❶ python按行读取文件,如何去掉换行符"\n

换行符与其他字符并没有区别

由于换行符总是最后一个字符,所有直接选择除去最后一个字符的所有字符即可

x='abc
'
x[:-1]

也可以使用字符串的strip方法

但是strip方法除了会去掉换行符还会去掉空格等其他字符

x.strip()

❷ 如何正确读取csv文件

package xufei;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
* 文件规则
* Microsoft的格式是最简单的。以逗号分隔的值要么是“纯粹的”(仅仅包含在括号之前),
* 要么是在双引号之间(这时数据中的双引号以一对双引号表示)。
* Ten Thousand,10000, 2710 ,,"10,000","It's ""10 Grand"", baby",10K
* 这一行包含七个字段(fields):
* Ten Thousand
* 10000
* 2710
* 空字段
* 10,000
* It's "10 Grand", baby
* 10K
* 每条记录占一行
* 以逗号为分隔符
* 逗号前后的空格会被忽略
* 字段中包含有逗号,该字段必须用双引号括起来。如果是全角的没有问题。
* 字段中包含有换行符,该字段必须用双引号括起来
* 字段前后包含有空格,该字段必须用双引号括起来
* 字段中的双引号用两个双引号表示
* 字段中如果有双引号,该字段必须用双引号括起来
* 第一条记录,可以是字段名
*/
/**
*
タイトル: xufei.CSVAnalysis.java
*
说明:
*
著作権: Copyright (c) 2006
*
会社名: technodia
* @author 徐飞
* @version 1.0
* createDate Aug 11, 2008
* 修正履歴
* 修正日 修正者修正理由
*/
public class CSVAnalysis {
private InputStreamReader fr = null;
private BufferedReader br = null;
public CSVAnalysis(String f) throws IOException {
fr = new InputStreamReader(new FileInputStream(f));
}
/**
* 解析csv文件 到一个list中
* 每个单元个为一个String类型记录,每一行为一个list。
* 再将所有的行放到一个总list中
* @return
* @throws IOException
*/
public List> readCSVFile() throws IOException {
br = new BufferedReader(fr);
String rec = null;//一行
String str;//一个单元格
List> listFile = new ArrayList>();
try {
//读取一行
while ((rec = br.readLine()) != null) {
Pattern pCells = Pattern
.compile("(\"[^\"]*(\"{2})*[^\"]*\")*[^,]*,");
Matcher mCells = pCells.matcher(rec);
List cells = new ArrayList();//每行记录一个list
//读取每个单元格
while (mCells.find()) {
str = mCells.group();
str = str.replaceAll(
"(?sm)\"?([^\"]*(\"{2})*[^\"]*)\"?.*,", "$1");
str = str.replaceAll("(?sm)(\"(\"))", "$2");
cells.add(str);
}
listFile.add(cells);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fr != null) {
fr.close();
}
if (br != null) {
br.close();
}
}
return listFile;
}
public static void main(String[] args) throws Throwable {
CSVAnalysis parser = new CSVAnalysis("c:/test2.csv");
parser.readCSVFile();
}
}

❸ 关于C语言读CSV文件的问题

csv文件即逗号分隔值文件。

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。

纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。

CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。

要用C语言读取CSV,首先需要确定文件中定义的字符分隔值,以及每一行各个列的元素格式。

如果所有的元素格式相同,那么可以每行一个一维数组,所有行组成一个二维数组,逐个元素进行读取。

如果元素格式不同,可以按照元素类型,构建一个结构体,每行读到一个结构体变量中,所有行组成一个结构体数组。

下面根据两种情况,按照分隔符为逗号(,),分别举一个例子:

文件名设定为in.csv,每行10个元素。

一、所有元素均相同类型,比如int型。

#include<stdio.h>
intmain()
{
FILE*fp;
inta[100][10];//定义一个足够大的数组来存储。
intline=0;
intc,i;

fp=fopen("in.csv","r");//以文本方式打开。
if(fp==NULL)return-1;//打开文件失败。
while(1)
{
i=0;//列标记清零。
while(1)
{
fscanf(fp,"%d",&a[line][i]);//从文件中读取一个元素。
c=getchar();//读取下一个字符,可能是分隔符,换行符或文件结尾。
if(c==' '||c==EOF)break;//读完一行,或者到文件结尾,退出读取。
i++;
}
line++;
if(c==EOF)break;
}

fclose(fp);//关闭文件。
//以下循环用来打印所有读到的值。
for(i=0;i<line;i++)
{
for(c=0;c<10;c++)
printf("%d",a[i][c]);
printf(" ");
}
}

二、每行元素不同。

比如共三列,第一列是int型,第二列是字符串,第三列是float型。

如果分隔符不是空白字符,或者字符串元素中可能存在除分隔符外的其它空白字符,在读取字符串的时候是不能用fscanf函数的。

定义结构体如下

strcutdata
{
inta;
chars[100];//根据实际要求,定义足够大的字符数组。
floatf;
};

读取代码如下:

#include<stdio.h>
intmain()
{
FILE*fp;
strcutdataa[100];//定义一个足够大的结构体一维数组来存储。
intline=0;
intc,i;

fp=fopen("in.csv","r");//以文本方式打开。
if(fp==NULL)return-1;//打开文件失败。
while(1)
{
fscanf(fp,"%d",&a[line].a);//从文件中读取第一个元素。
c=getchar();//读取分隔符。
//接下来要读取字符串,需要逐个字符读入,直到出现分隔符为止。
i=0;
while(1)
{
a[line].s[i]=getchar();//读入一个字符。
if(a[line].s[i]==',')//发现分隔符
{
a[line].s[i]='';//赋值字符串结束符。
break;//退出读取字符串。
}
i++;
}
//由于在读字符串的时候分隔符已经被读取,这里不需要读分隔符,而是直接读下一个元素。
fscanf(fp,"%f",&a[line].f);//从文件中读取最后一个元素。
c=getchar();//读取下一个字符,可能是换行符或文件结尾。
line++;
if(c==EOF)break;//到文件结尾,退出读取。
}

fclose(fp);//关闭文件。
//以下循环用来打印所有读到的值。
for(i=0;i<line;i++)
{
printf("%d%s%f ",a[i].a,a[i].s,a[i].f);
}
}

❹ 我在读取CSV文件时,每读取一行放到DT里面,但是遇到了这一行中有""引号的这样的数据会出错,怎么办

csv文件是可以用记事本打开的,如果只是因为引号导致出错的话,可以简单的将所有引导以空代替
不过,CSV中用引号的这列数据一般是代表这列数据是字符串,要是你需要的是数值,而读出来的字符串,可能会出错还整个跳出的.顺便问下,DT是什么的简称?

❺ 为Excel生成CSV文件,如何在值中包含换行符

源CSV文件:

01,02

"aaa

bbb",ccc

要换行的单元格信息前后加引号,中间直接硬换行。

参考:网页链接

❻ CSV文件中的长文本中有换行符,打开时,一行数据变成了多行,求破!!

在excel 中 本地 文本 导入, 选择你的文件, 然后在按你的文件的 分隔符设置就可以了

❼ EXCEL 导入 CSV 内容里有回车符

我刚研究完工商银行的明细单,也是CSV文件,方法是笨了点,不知道对你有没有用

导入时,第一步,选择文件类型时,是自动选择为"逗号分隔"不用管,第二步,选择分隔符号时,默认的是Tab键,不用管它,再复选个"逗号",然后就下一步直到完成就可以了,内容很清楚的

这时的文件的数值都是文本的,需要转换为数字,方法是:
首先要在你要转换的单元格或列右边增加一格或列(不知道为什么,但不加右边的数据就被替换掉了),
然后再选择你要转换的单元格或者列(只能一次一列啊),在“数据”菜单上,单击“分列”。然后一直下一步到完成,这时会提示你是否要"替换单元格",点同意就行啦,麻烦的就是转换前要在右边加一列,转换完还得再删

现在都清楚啦 对了,我用的是of2003

❽ 请教csv文件用什么标记和识别相当于一个单元格的内容中的“换行”的

要换行时,按下ALT+ENTER

❾ c# csv如果单元格的内容本身有间隔符,换行符 这个怎么处理

双引号区分
1,2,"3
4"
像上面就是三列数据

❿ 关于读取CSV文件中数据中含有回车符号的问题

没有 读取一行的函数吗
判断\n 或者 byte是 13,10的数据

阅读全文

与读取csv文件识别不了换行符相关的资料

热点内容
win10图片开预览 浏览:909
linux英文文献 浏览:445
红米手机歌曲存哪个文件 浏览:947
大数据流调排查是什么意思 浏览:680
qq发过的图片都在哪个文件里 浏览:113
linuxkernel38 浏览:281
苹果手机密码6位变4位 浏览:651
编程如何让人物踢球 浏览:884
win10防蓝光软件下载 浏览:983
qq群文件容量 浏览:164
有什么网站验证pr 浏览:186
如何拍摄飘浮照片教程 浏览:366
剑灵白青版本刺客 浏览:965
卡车在哪个app可以接单 浏览:526
怎么读编程文档java 浏览:501
基础数据库和半导体哪个好 浏览:118
word显示隐藏标记 浏览:63
win10f4麦克风设置 浏览:426
昆明码高少儿编程在哪里 浏览:508
云数据库哪个牌子好 浏览:479

友情链接