Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How to get exact values of a line with all columns in a list-like data file

Test Data

The thing I want to do is, search the "name" data of line, find it, and extract every data on the same line.

For example , [{"name": "Rusted Abyss Scarab", "exaltedValue": 0, "chaosValue": 0.5, "currType": "Chaos Orb"}] considering this line I want to search for "Abyss" in my function and when I get this in my search, I want to extract name, exaltedValue, chaosValue and currType.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

class SearchScarab(list):
def search(self,name):
  matching_items = []
  for item in self:
      if name in item.name: #Matching name column here and it is success.
          matching_items.append(item) #Appending the item name to the matching_item
           os.chdir(r"C:\Users\emosc\PycharmProjects\GithubPushs\psychescape_price_fetcher\psychescape_price_fetcher\values")
          with open("scarab.txt", "r") as file:
              data = file.read()
              index = matching_items.index(item)
              print(index) #Trying to get index of the item line
              print(data[index]) #Print data of the index of item line, prints nothing.
          break
  return matching_items

When I run the full code with the search function above with

[c1.name for c1 in ScarabValues.exportfunction.search("Abyss")] #c = ScarabValues, c.Scarab_Values

 ['Rusted Abyss Scarab']

the first line, it outputs the second line. I want to full print the values like ["Rusted Abyss Scarab"], ["0"], ["0.5"], ["Chaos Orb"] (They are all from the same line). How?

>Solution :

You could parse the data into dictionary and get the data using it.

import json

item = """[{"name": "Winged Abyss Scarab", "exaltedValue": 0, "chaosValue": 90.0, "currType": "Chaos Orb"}]"""

# Convert it to dict object, indexing is used since it is a list with a single element
parsed = json.loads(item)[0]

# Now you can access to the data with keys

name = parsed['name'] # 'Winged Abyss Scarab'
exalted_value = parsed['exaltedValue'] # 0
chaos_value = parsed['chaosValue'] # 90.0
curr_type = parsed['currType'] # 'Chaos Orb'

It is doable without json module of course, but that would unnecessarilly overcomplicate things.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading