Tensorflow csv阅读器错误:"字符串内的引号必须通过另一个引号转义"

时间:2016-02-02 17:26:37

标签: python csv tensorflow

我有一个csv文件,我很确定没有" in,我试图使用以下代码阅读:

filename_queue = tf.train.string_input_producer(["../data/train_no_empty_rows.txt"])
# train_no_empty_rows

reader = tf.TextLineReader()
key, value = reader.read(filename_queue)


record_defaults = [tf.constant(['p'], dtype=tf.string),    # Column 0
               tf.constant(['p'], dtype=tf.string),    # Column 1
               tf.constant(['p'], dtype=tf.string)]   # Column 2 


col1, col2, col3 = tf.decode_csv(
value, record_defaults=record_defaults,field_delim=" ")

features = tf.pack([col2, col3])
with tf.Session() as sess:
  # Start populating the filename queue.
  coord = tf.train.Coordinator()
  threads = tf.train.start_queue_runners(coord=coord)
  for i in range(1200):
    # Retrieve a single instance:
    example, label = sess.run([features, col1])

  coord.request_stop()
  coord.join(threads)

但是当我运行它时,我收到了这个错误:

InvalidArgumentError: Quote inside a string has to be escaped by another quote
 [[Node: DecodeCSV_25 = DecodeCSV[OUT_TYPE=[DT_STRING, DT_STRING, DT_STRING], 
field_delim=" ", 
_device="/job:localhost/replica:0/task:0/cpu:0"]
(ReaderRead_25:1, Const_75, Const_76, Const_77)]]

我认为我可以调试,但我无法找到它引用csv文件中哪些条目存在问题的位置。它是一个相当大的csv文件,前100个条目没有这个问题。正如我所说,我找不到任何"和'似乎在测试中解析得很好。有什么方法可以找到麻烦的条目吗?

谢谢!

1 个答案:

答案 0 :(得分:4)

查找麻烦条目的一种方法是在tf.Print()之前添加tf.decode_csv()运算符:

# ...

# Prints out the contents of `key` and `value` every time the op executes.
value = tf.Print(value, [key, value])

col1, col2, col3 = tf.decode_csv(
    value, record_defaults=record_defaults, field_delim=" ")

# ...

失败前最后记录的条目应指明哪个输入无效。希望在进行此修改时,根本原因会变得明显。