span8
span4
我正在从网上读取CSV文件。这个文件是经过编码的,所以我首先对它进行解码,最后得到一个包含csv数据的属性“_decoded”。我想使用这些数据来创建一个表(就像csv阅读器所做的那样),而不需要首先将输出写入文件。
样本格式:
objid; xcoord ycoord;名字21;123;456;22家;125;458;树
下面链接的线程中建议的解决方案不起作用,抛出错误“Python异常”
https://knowledge.亚搏在线safe.com/questions/78520/parse-csv-data-stored-in-database-table.html
我想我们可以使用csv压扁器转换器(如xml压扁器和json压扁器)。当然,这不是一个常见的问题,所以我怀疑我们能否实现它。
最好的变通方法是什么@erik_jan建议将其写入临时文件并将其读取回来。或者,您可以尝试使用AttributeSplitter,使用换行字符作为分隔符来获取单独的记录,然后再次使用AttributeSplitter作为分隔符,从每个记录中获取单独的属性。但我仍然认为临时文件写入是最好的解决方案。
对于你的用例,你可以尝试以下方法:
从fmeobjects导入*导入csv进口ParseCSVString StringIO类(对象):def输入(自我,特性):一一一一csv_string = feature.getAttribute (csv)一千一百一十一csv_parser = csv.reader (StringIO.StringIO (csv_string)分隔符= ';')一一一一csv_parser备案:十一万一千一百一十一f = feature.clone()十一万一千一百一十一n,列举(记录)的价值:一千一百一十一万一千一百一十一f。setAttribute('value{%s}' % n, value) A A A A A self.pyoutput(f)
谢谢,我必须使用io. stringio (csv_string)和import io(我甚至没有安装python 3 ?!)才能让它工作。然而,这并不是我想要的。第一行应该是属性和带有值的后续特性。我认为我可以以某种方式暴露所有的值{},但这样它就不是动态的,或者?
好的,我通过简单地在一个变量中写第一行并在setAttribute中迭代得到它。不幸的是,除非我在PythonCaller中手动公开属性名(从第一次运行时记录),否则似乎没有办法在以后访问它们。它们在检查器中是可见的,但在将输出写入文件时不可见。我基本上需要的是一个通配符,该通配符将公开来自PythonCaller的所有新内容。
©2019安全亚搏在线软件公司法律