我有一个CSV文件(24.1 MB),我无法完全读入我的R会话.当我在电子表格程序中打开文件时,我可以看到112,544行.当我将它读入R时,read.csv我只得到56,952行并且这个警告:
cit <- read.csv("citations.CSV", row.names = NULL,
comment.char = "", header = TRUE,
stringsAsFactors = FALSE,
colClasses= "character", encoding= "utf-8")
Warning message:
In scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
EOF within quoted string
Run Code Online (Sandbox Code Playgroud)
我可以将整个文件读入R readLines:
rl <- readLines(file("citations.CSV", encoding = "utf-8"))
length(rl)
[1] 112545
Run Code Online (Sandbox Code Playgroud)
但我不能把它作为一个表(通过read.csv)回到R中:
write.table(rl, "rl.txt", quote = FALSE, row.names = FALSE)
rl_in <- read.csv("rl.txt", skip = 1, row.names = NULL)
Warning message:
In scan(file, what, nmax, …Run Code Online (Sandbox Code Playgroud) 以下代码一直有效,直到今天我从Windows机器导入并出现此错误:
在未引用字段中看到的换行符 - 您是否需要以通用换行模式打开文件?
import csv
class CSV:
def __init__(self, file=None):
self.file = file
def read_file(self):
data = []
file_read = csv.reader(self.file)
for row in file_read:
data.append(row)
return data
def get_row_count(self):
return len(self.read_file())
def get_column_count(self):
new_data = self.read_file()
return len(new_data[0])
def get_data(self, rows=1):
data = self.read_file()
return data[:rows]
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
def upload_configurator(request, id=None):
"""
A view that allows the user to configurator the uploaded CSV.
"""
upload = Upload.objects.get(id=id)
csvobject = CSV(upload.filepath)
upload.num_records = csvobject.get_row_count()
upload.num_columns = csvobject.get_column_count()
upload.save()
form = …Run Code Online (Sandbox Code Playgroud) 我正在使用快速CSV阅读器将一些粘贴的文本解析为网页.Fast CSV阅读器需要一个TextReader对象,而我所拥有的只是一个字符串.在运行中将字符串转换为TextReader对象的最佳方法是什么?
谢谢!
更新 - 示例代码 - 在原始示例中,新的StreamReader正在查找名为"data.csv"的文件.我希望通过TextBox_StartData.Text提供它.
使用下面的代码不会编译.
TextReader sr = new StringReader(TextBox_StartData.Text);
using (CsvReader csv = new CsvReader(new StreamReader(sr), true))
{
DetailsView1.DataSource = csv;
DetailsView1.DataBind();
}
Run Code Online (Sandbox Code Playgroud)
该new StreamReader(sr)告诉我它有一些无效的参数.有任何想法吗?
作为替代方法,我试过这个:
TextReader sr = new StreamReader(TextBox_StartData.Text);
using (CsvReader csv = new CsvReader(sr, true))
{
DetailsView1.DataSource = csv;
DetailsView1.DataBind();
}
Run Code Online (Sandbox Code Playgroud)
但我得到一个Illegal characters in path Error.这里是TextBox_StartData.Text中的字符串示例:
Fname\tLname\tEmail\nClaude\tCuriel\tClaude.Curiel@email.com\nAntoinette\tCalixte\tAntoinette.Calixte@email.com\nCathey\tPeden\tCathey.Peden@email.com\n
Run Code Online (Sandbox Code Playgroud)
如果这是正确的方法,任何想法?再次感谢你的帮助!
我有一个csv文件,其中一些数值表示为字符串,逗号为千分隔符,例如,"1,513"而不是1513.将数据读入R的最简单方法是什么?
我可以使用read.csv(..., colClasses="character"),但是在将这些列转换为数字之前,我必须从相关元素中删除逗号,我找不到一个巧妙的方法来做到这一点.
我正在开发一项功能,将搜索结果导出到CSV文件,以便在Excel中打开.其中一个字段是一个自由文本字段,可能包含换行符,逗号,引号等.为了抵消这一点,我将字段用双引号(")包装.
但是,当我将数据导入Excel 2007时,设置适当的分隔符,并将文本限定符设置为双引号,换行符仍然在换行符处创建新记录,我希望在其中看到整个文本字段单细胞.
我也尝试用CR(\ r)替换CR/LF(\ r \n),再用LF(\n)替换,但没有运气.
有没有其他人遇到过这种行为,如果有,你是如何解决的?
TIA,
-J
编辑:
这是我用手写的复制问题的快速文件.
ID,名称,描述
"12345","史密斯,乔","嘿.
我的名字是乔."
当我将其导入Excel 2007时,我最终得到一个标题行和两个记录.请注意,"Smith,Joe"中的逗号正在正确处理.这只是造成问题的换行符.
我有一种情况,有时当我读取一个csv来自df我得到一个不需要的索引列名称unnamed:0.这很烦人!我试过了
,A,B,C
0,1,2,3
1,4,5,6
2,7,8,9
Run Code Online (Sandbox Code Playgroud)
我认为这是一个解决方案,但我仍然得到file.csv专栏!有没有人对此有所了解?
Java中是否存在允许我将CSV数据文件转换为文件的现有应用程序或库XML?
该XML标签将通过可能含有的第一行的列标题中提供.
假设我有一个csv.DictReader对象,我想把它写成CSV文件.我怎样才能做到这一点?
我知道我可以像这样编写数据行:
dr = csv.DictReader(open(f), delimiter='\t')
# process my dr object
# ...
# write out object
output = csv.DictWriter(open(f2, 'w'), delimiter='\t')
for item in dr:
output.writerow(item)
Run Code Online (Sandbox Code Playgroud)
但是我如何包含字段名?
扼杀一个简单的数组
看起来像这样
$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);
Run Code Online (Sandbox Code Playgroud)
那会回来的
lastname,email,phone
Run Code Online (Sandbox Code Playgroud)
很棒,所以我可能会这样做
$array = array('lastname', 'email', 'phone');
$comma_separated = implode("','", $array);
$comma_separated = "'".$comma_separated."'";
Run Code Online (Sandbox Code Playgroud)
现在我有我想要的漂亮的csv字符串
'lastname','email','phone'
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点,我觉得应该有一个可选参数implode我错过了什么?
我正在使用Python 3.4和IPython,并具有以下代码.我无法从给定的URL读取csv文件:
import pandas as pd
import requests
url="https://github.com/cs109/2014_data/blob/master/countries.csv"
s=requests.get(url).content
c=pd.read_csv(s)
Run Code Online (Sandbox Code Playgroud)
我有以下错误
"预期的文件路径名或类文件对象,得到类型"
我怎样才能解决这个问题?