从csv文件中读取字符并存储在张量中

时间:2017-06-04 15:07:31

标签: python csv tensorflow

filename_queue = tf.train.string_input_producer(["AlldTKmer4997.csv"])

reader = tf.TextLineReader()

key, value = reader.read(filename_queue)

record_defaults = [tf.constant([], dtype=tf.string),     
               tf.constant([], dtype=tf.string),     
               tf.constant([], dtype=tf.string),    
               tf.constant([], dtype=tf.string),
               tf.constant([], dtype=tf.string),
               tf.constant([], dtype=tf.string),
               tf.constant([], dtype=tf.string),
               tf.constant([], dtype=tf.string),
               tf.constant([], dtype=tf.string),
               tf.constant([], dtype=tf.string),
               tf.constant([], dtype=tf.string),
               tf.constant([], dtype=tf.string),
               tf.constant([], dtype=tf.string),
               tf.constant([], dtype=tf.string),
               tf.constant([], dtype=tf.string),]


  col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11,col12,col13,col14,col15 
   = tf.decode_csv(value,record_defaults=record_defaults)

features = tf.stack([col1, col2,col3,col4,col5,col6,col7,col8,col9,col10,col11,col12,col13,col14,col15 ])

 with tf.Session() as sess:

 coord = tf.train.Coordinator()

 threads = tf.train.start_queue_runners(coord=coord)


 for i in range(1000):

X = sess.run([features])

coord.request_stop()

coord.join(threads)

` 我试图从一个字符和特殊字符的csv文件中读取并编写上面的代码 输入csv文件如下所示:

“A”“G”“T”“C”......(15个字符)“/”“)”“3”(15个特殊字符/整数)

但是我收到以下错误:

InvalidArgumentError:字符串内的引号必须由另一个引号转义      [[Node:DecodeCSV_2 = DecodeCSV [OUT_TYPE = [DT_STRING,DT_STRING,DT_STRING,DT_STRING,DT_STRING,DT_STRING,DT_STRING,DT_STRING,DT_STRING,DT_STRING,DT_STRING,DT_STRING,DT_STRING,DT_STRING,DT_STRING],field_delim =“,”,_ device = “/ job:localhost / replica:0 / task:0 / cpu:0”](ReaderReadV2_2:1,Const_15,Const_16,Const_17,Const_18,Const_19,Const_20,Const_21,Const_22,Const_23,Const_24,Const_25,Const_26,Const_27, Const_28,Const_29)]]

1 个答案:

答案 0 :(得分:0)

Tensorflow只能在RFC4180之后解码有效的csv。

似乎你可能在内部字段中有双引号,其中双引号用于封闭。请参阅RFC4180的第2.7节。

  

如果使用双引号括起字段,则使用双引号          出现在一个字段内必须通过前面的方式进行转义          另一个双引号。例如:

"aaa","b""bb","ccc"

尝试在它之前添加额外的双引号。