Reputation: 107
I am outputting some data to a CSV file but for some reason the method alternates the way in which it outputs the data.The code below is the method being used to output the object to the CSV file.
@staticmethod
def OutputCSV(csv_file):
posts = ApplicationModel.ApplicationModel.getTwitterObjects()
csv_columns = ['post','sentiment']
with open(csv_file, 'w') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(csv_columns)
for TwitterObject.TwitterObject in posts:
writer.writerow({
TwitterObject.TwitterObject.post,
TwitterObject.TwitterObject.sentiment
})
The text below is a sample from the outputted CSV file.
post,sentiment
b'@Angel4Rubio @ehillm @Arsenal welcott been shit since he came to the league.',neg
pos,"b'Leicester closer to title, Arsenal held: Leicester City need just five points to complete a fairytale Premier ... '"
pos,"b'Leicester closer to title, Arsenal held: Leicester City need just five points to complete a fairytale Premier ... '"
pos,"b' @premierleague: ""I\'m slightly disappointed we didn\'t take all three points"" - Allardyce on #SUNARS\n\nMore: '"
pos,"b'Leicester closer to title, Arsenal held: Leicester City need just five points to complete a fairytale Premier ... '"
b' @MesutOzil1088: best. team. \xf0\x9f\x92\xaa\xf0\x9f\x8f\xbc\xf0\x9f\x98\x8e\n#yagunnersya #BeTheDifference #AFCvLCFC #Arsenal #bigpoints ',pos
"b'Walcott, arteta, flamini, giroud and per to be sold. Bring in Hummells, Xhaka, Kante and Aubaumayang. #arsenal'",neg
pos,b' @FootieFansKnow: Amongst all the madness there is always Hector #Arsenal #Sunderland #Wenger #UCLDraw #Topfour '
Upvotes: 1
Views: 1289
Reputation: 3415
Change
writer.writerow({
TwitterObject.TwitterObject.post,
TwitterObject.TwitterObject.sentiment
})
to
writer.writerow([
TwitterObject.TwitterObject.post,
TwitterObject.TwitterObject.sentiment
])
set
elements like dict
keys are unordered. Hence the behavior. You can profile x in s
for a large set s
and compare it with x in l
, where l = list(s)
. The look up in former is O(1), while in latter, O(n). This is one of the advantages of unordered hash lookups.
Upvotes: 5
Reputation: 2568
Try with sorted
:
@staticmethod
def OutputCSV(csv_file):
posts = ApplicationModel.ApplicationModel.getTwitterObjects()
csv_columns = sorted(['post','sentiment'])
with open(csv_file, 'w') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(csv_columns)
for TwitterObject.TwitterObject in posts:
writer.writerow({
TwitterObject.TwitterObject.post,
TwitterObject.TwitterObject.sentiment
})
Upvotes: 1