Advertisement
Guest User

battle network python code

a guest
Feb 3rd, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.17 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Fri Feb  3 07:42:37 2017
  4. @author: Eela6
  5. Python 3.6.0
  6. """
  7. from collections import defaultdict
  8. from string import ascii_uppercase
  9. import csv
  10.  
  11.        
  12. class Chip():
  13.     def __init__(self, name, chip_id, img_filename, element, damage, letters, size, description, location):
  14.         (self. name, self.chip_id, self.img_filename, self.element, self.damage, self.letters,
  15.         self.size, self.description, self.location) = (
  16.                 name, chip_id, img_filename, element, damage, letters, size, description, location)
  17.    
  18.     def __str__(self):
  19.         return self.name
  20.     def __repr__(self):
  21.         args = (self. name, self.chip_id, self.img_filename, self.element, self.damage, self.letters,
  22.         self.size, self.description, self.location)
  23.         return f'Chip{args}'
  24.     def __hash__(self):
  25.         return hash(self.chip_id)
  26.    
  27.     def as_tuple(self):
  28.         return (self.name, self.chip_id, self.img_filename, self.element, self.damage, self.letters,
  29.         self.size, self.description, self.location)
  30.    
  31. def generate_chips(filename):
  32.     with open(filename) as file:
  33.         next(file)
  34.         buffer = []
  35.         for line in file:
  36.             if not line.startswith('|-'):
  37.                 buffer.append(line)
  38.             else:
  39.                 chip = ''.join(buffer)
  40.                 chip = chip.split('||')
  41.                 yield as_clean_chip(chip)
  42.                 buffer = []
  43.    
  44. def strip_brackets_and_newlines(string):
  45.     string = string.strip('[')
  46.     string= string.strip('\n')
  47.     string = string.strip(']')
  48.     return string
  49. def as_clean_chip(chip):
  50.     def clean_id(id_):
  51.         return id_.strip('|')
  52.    
  53.     def clean_img_filename(img_filename):
  54.         return img_filename[7:-2]
  55.    
  56.     def clean_name(name):
  57.         name = strip_brackets_and_newlines(name)
  58.         name = name.split()[0]
  59.         return name
  60.     def clean_and_separate_damage_letters_size(damage_letters_size):
  61.          damage, letters, size = damage_letters_size.split('\n')
  62.          letters = letters.strip('|')
  63.          letters = letters.replace(',', '')
  64.          letters = letters.split()
  65.          size = size.strip('|')
  66.          return damage, letters, size
  67.      
  68.     def clean_and_separate_letters(letters):
  69.             letters = letters.strip('|')
  70.             letters = letters.replace(',', '')
  71.             letters = letters.split()
  72.     def clean_element(element):
  73.         element = element.split()[-1]
  74.         element = element[:-6]
  75.         if element == 'Null':
  76.             element = 'None'
  77.         return element
  78.    
  79.     def clean_description(description):
  80.         return strip_brackets_and_newlines(description)
  81.     def clean_location(location):
  82.         location = strip_brackets_and_newlines(location)
  83.        
  84.        
  85.     chip_id, img_filename, name, element, damage_letters_size, description, location = chip
  86.     chip_id  = clean_id(chip_id)
  87.     img_filename = clean_img_filename(img_filename)
  88.     name = clean_name(name)
  89.     damage, letters, size = clean_and_separate_damage_letters_size(damage_letters_size)
  90.     element = clean_element(element)
  91.     location = clean_location(location)                    
  92.     chip = Chip(name, chip_id, img_filename, element, damage, letters, size, description, location)
  93.     return chip
  94.      
  95. def write_to_csv(filename, chips):
  96.     with open(filename, 'w') as file:
  97.         writer = csv.writer(file)
  98.         header = 'NAME', 'ID', 'IMG', 'SIZE', 'DAMAGE', 'ELEMENT', 'LETTERS', 'SIZE' 'DESCRIPTION', 'LOCATION'
  99.         writer.writerow(header)
  100.         for chip in chips:
  101.             writer.writerow(chip.as_tuple())
  102.        
  103. def chips_by_letter(chips):
  104.     by_letter = {letter: [] for letter in ascii_uppercase}
  105.     by_letter['*'] = []
  106.     for chip in chips:
  107.         for letter in chip.letters:
  108.             by_letter[letter].append(chip)
  109.    
  110.     return by_letter
  111. if __name__ == '__main__':
  112.     chips = tuple(generate_chips(input_filename))
  113.     by_letter = chips_by_letter(chips)
  114.     write_to_csv(output_filename, chips)
  115.     for letter in by_letter:
  116.         chip_names = tuple(chip.name for chip in by_letter[letter])
  117.         print(letter, ': ', chip_names)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement