我正在研究一个很长的Bash脚本.我想将CSV文件中的单元格读入Bash变量.我可以解析行和第一列,但不能解析任何其他列.到目前为止,这是我的代码:
cat myfile.csv|while read line
do
read -d, col1 col2 < <(echo $line)
echo "I got:$col1|$col2"
done
Run Code Online (Sandbox Code Playgroud)
它只打印第一列.作为额外的测试,我尝试了以下内容:
read -d, x y < <(echo a,b,)
并且$ y是空的.所以我尝试过:
read x y < <(echo a b)
$ y是b.为什么?
我是python和pandas的新手.我正在尝试将tsv文件加载到熊猫中DataFrame.
这就是我正在尝试的错误和我得到的错误:
>>> df1 = DataFrame(csv.reader(open('c:/~/trainSetRel3.txt'), delimiter='\t'))
Traceback (most recent call last):
File "<pyshell#28>", line 1, in <module>
df1 = DataFrame(csv.reader(open('c:/~/trainSetRel3.txt'), delimiter='\t'))
File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 318, in __init__
raise PandasError('DataFrame constructor not properly called!')
PandasError: DataFrame constructor not properly called!
Run Code Online (Sandbox Code Playgroud) 使用nodejs,我想解析10000个记录的.csv文件,并对每一行进行一些操作.我尝试使用http://www.adaltas.com/projects/node-csv.我不能让它在每一行停下来.这只是读取所有10000条记录.我需要做以下事情
任何人都可以在这里建议任何其他想法?
如何在Windows命令行上将XLS文件转换为CSV文件.
该计算机已安装Microsoft Office 2000.如果不能使用Microsoft Office,我愿意安装OpenOffice.
我想将数据[1,2,'a','He said "what do you mean?"']转换为csv格式的字符串.
通常人们可以使用csv.writer()它,因为它处理所有疯狂的边缘情况(逗号转义,引用标记转义,CSV方言等).捕获是csv.writer()期望输出到文件对象,而不是字符串.
我目前的解决方案是这个有点hacky函数:
def CSV_String_Writeline(data):
class Dummy_Writer:
def write(self,instring):
self.outstring = instring.strip("\r\n")
dw = Dummy_Writer()
csv_w = csv.writer( dw )
csv_w.writerow(data)
return dw.outstring
Run Code Online (Sandbox Code Playgroud)
任何人都可以提供更优雅的解决方案,仍能很好地处理边缘情况吗?
编辑:这是我最终如何做到这一点:
def csv2string(data):
si = StringIO.StringIO()
cw = csv.writer(si)
cw.writerow(data)
return si.getvalue().strip('\r\n')
Run Code Online (Sandbox Code Playgroud) 特定
2,1016,7 /二千○八分之三十一14:22,杰夫达尔加斯6 /二千零十一分之五22:21,http://stackoverflow.com, "科瓦利斯,OR",7679,351,81,b437f461b3fd27387c5d8ab47a293d35,34
如何使用C#将上述信息拆分为字符串,如下所示:
2
1016
7/31/2008 14:22
Geoff Dalgas
6/5/2011 22:21
http://stackoverflow.com
Corvallis, OR
7679
351
81
b437f461b3fd27387c5d8ab47a293d35
34
Run Code Online (Sandbox Code Playgroud)
如您所见,其中一列包含,<=(Corvallis,OR)
// update //基于 C#Regex Split - 引号外的逗号
string[] result = Regex.Split(samplestring, ",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
Run Code Online (Sandbox Code Playgroud) 我目前正在尝试从Python 2.7中的.csv文件读取数据,最多包含100万行和200列(文件范围从100mb到1.6gb).对于300,000行以下的文件,我可以(非常慢)地执行此操作,但是一旦我超过该值,我就会出现内存错误.我的代码看起来像这样:
def getdata(filename, criteria):
data=[]
for criterion in criteria:
data.append(getstuff(filename, criteron))
return data
def getstuff(filename, criterion):
import csv
data=[]
with open(filename, "rb") as csvfile:
datareader=csv.reader(csvfile)
for row in datareader:
if row[3]=="column header":
data.append(row)
elif len(data)<2 and row[3]!=criterion:
pass
elif row[3]==criterion:
data.append(row)
else:
return data
Run Code Online (Sandbox Code Playgroud)
getstuff函数中else子句的原因是所有符合条件的元素都将在csv文件中一起列出,所以当我越过它们时我会离开循环以节省时间.
我的问题是:
如何才能让这个与更大的文件一起使用?
有什么方法可以让它更快吗?
我的电脑有8GB RAM,运行64位Windows 7,处理器是3.40 GHz(不确定你需要什么信息).
非常感谢您的帮助!
如果我有一个csv文件,是否有快速bash方式打印出任何单个列的内容?可以安全地假设每行具有相同的列数,但每列的内容将具有不同的长度.
我是Spark的新手,我正在尝试使用Spark从文件中读取CSV数据.这就是我在做的事情:
sc.textFile('file.csv')
.map(lambda line: (line.split(',')[0], line.split(',')[1]))
.collect()
Run Code Online (Sandbox Code Playgroud)
我希望这个调用能给我一个我文件的两个第一列的列表,但是我收到了这个错误:
File "<ipython-input-60-73ea98550983>", line 1, in <lambda>
IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)
虽然我的CSV文件不止一列.
我正在尝试将一系列产品转换为CSV文件,但似乎没有计划.CSV文件是一个长行,这是我的代码:
for($i=0;$i<count($prods);$i++) {
$sql = "SELECT * FROM products WHERE id = '".$prods[$i]."'";
$result = $mysqli->query($sql);
$info = $result->fetch_array();
}
$header = '';
for($i=0;$i<count($info);$i++)
{
$row = $info[$i];
$line = '';
for($b=0;$b<count($row);$b++)
{
$value = $row[$b];
if ( ( !isset( $value ) ) || ( $value == "" ) )
{
$value = "\t";
}
else
{
$value = str_replace( '"' , '""' , $value );
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
} …Run Code Online (Sandbox Code Playgroud)