<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>terrible-coding &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/terrible-coding/</link>
	<description>Feed of posts on WordPress.com tagged "terrible-coding"</description>
	<pubDate>Fri, 25 Dec 2009 22:14:39 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[My Python needs a Shaft]]></title>
<link>http://nobodyreadsthis.co.uk/2008/08/28/my-python-needs-a-shaft/</link>
<pubDate>Thu, 28 Aug 2008 14:06:10 +0000</pubDate>
<dc:creator>James Reynolds</dc:creator>
<guid>http://nobodyreadsthis.co.uk/2008/08/28/my-python-needs-a-shaft/</guid>
<description><![CDATA[You know you’re massively out of practice when it takes 63 lines of Python just to filter an XML fil]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>You know you’re massively out of practice when it takes 63 lines of Python just to filter an XML file and convert what you get into a CSV file.</p>
<p>I think if I really tried I could get it down to 15-20 well formed lines … I start with something like standard XML trees and finish with:</p>
<p><code>1,Back_Only,Use_Job_Setting,Tabloid,<br />
2,Different,Use_Job_Setting,Tabloid,<br />
3,Back_Only,Use_Job_Setting,Statement,<br />
4,Different,Use_Job_Setting,Statement,<br />
5,Back_Only,Use_Job_Setting,Executive,<br />
6,Different,Use_Job_Setting,Executive,<br />
7,Back_Only,Use_Job_Setting,8_5_x_13,<br />
8,Different,Use_Job_Setting,8_5_x_13,</code></p>
<p>The code is thus:</p>
<p><code>## Fireeye XML Test Plan to CSV converter.<br />
## Scripted by James Reynolds</code></p>
<p><code>def main():<br />
print "Filename (*.xml): "<br />
fileName = raw_input()<br />
fileHold = open(fileName, "rb")<br />
fileContent = fileHold.readlines()<br />
fileContent = relist(fileContent)<br />
print "Read and Relisted"<br />
writeTo = open(fileName.replace(".xml",".csv"), 'w')<br />
print "Writing to " + fileName.replace(".xml",".csv")<br />
for i in fileContent:<br />
string = listToCSV(i)<br />
string = remXML(string)<br />
writeTo.write(string)<br />
print "Done."</code></p>
<p><code>## Takes XML doc and filters out what we need returning list of tests<br />
def relist(fileContent):<br />
master = []<br />
sub = []<br />
adder = False<br />
for element in fileContent:<br />
if (element.find("Testcase TCNo") &#62;= 0):<br />
adder = True<br />
elif (element.find("") &#62;= 0):<br />
adder = False<br />
sub.append(element)<br />
master.append(sub)<br />
sub = []<br />
if (adder == True):<br />
sub.append(element)<br />
return master</code></p>
<p><code>## Takes list and reformats to CSV<br />
def listToCSV(varList):<br />
csvString = ""<br />
for element in varList:<br />
if (csvString == ""):<br />
element = element.replace("\r\n", "")<br />
element = element.strip()<br />
csvString = csvString + element<br />
else:<br />
element = element.replace("\r\n", ",")<br />
element = element.strip()<br />
csvString = csvString + element<br />
csvString = csvString + "\r\n"<br />
return csvString</code></p>
<p><code>## Removes XML tags<br />
def remXML(XMLstring):<br />
delete = False<br />
newString = ""<br />
for i in XMLstring:<br />
if (i == "&#60;"):<br />
delete = True<br />
if (i == "&#62;"):<br />
delete = False<br />
if (delete == False and i != "&#62;"):<br />
newString = newString + i<br />
return newString.replace(",,",",")<br />
main()</code></p>
<p>You can probably see the though process … “I need it to do this. Oh, it won’t? Ok … This. That’s not quite right … What if I had this? Nearly there … And done. Next …”</p>
<p>Clearly not the best way to program … Knowing me I’ll sit down and rewrite it to be a lot better some time soon but … Meh.</p>
<p>Check out todaysbigfail.com, it’s run by another IP here.</p>
<p>Regards,<br />
<strong>JamesR.</strong></p>
<p><em><strong>Wonders if his title is an obvious enough reference.</strong></em></p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
