{"id":112431,"date":"2020-05-04T13:25:56","date_gmt":"2020-05-04T13:25:56","guid":{"rendered":"https:\/\/blog.finxter.com\/?p=8185"},"modified":"2020-05-04T13:25:56","modified_gmt":"2020-05-04T13:25:56","slug":"how-to-read-a-csv-file-into-a-python-list","status":"publish","type":"post","link":"https:\/\/sickgaming.net\/blog\/2020\/05\/04\/how-to-read-a-csv-file-into-a-python-list\/","title":{"rendered":"How to Read a CSV File Into a Python List?"},"content":{"rendered":"<p><em><strong>6 min read\u00a0<\/strong><\/em><\/p>\n<p>How to read data from a <code>.csv<\/code> file and add its column or row to the list? There are three main ways:\u00a0<\/p>\n<ul>\n<li><strong>Option 1<\/strong> (the quickest): use the standard library\u00a0<\/li>\n<li><strong>Option 2<\/strong> (the most preferred): use <code>pandas.read_csv()<\/code>\u00a0<\/li>\n<li><strong>Option 3<\/strong> (optional): use <code>csv.reader()<\/code>\u00a0<\/li>\n<\/ul>\n<h2>Short answer&nbsp;<\/h2>\n<p>The simplest option to read a <code>.csv<\/code> file into a list is to use it with <code>open(\u201cfile\u201d) as f:<\/code> and apply the actions you need. You should also remember that such an approach has its limitations, as you&#8217;ll see in the tutorial.\u00a0<\/p>\n<h2>Prerequisites&nbsp;<\/h2>\n<p>To read the <code>.csv<\/code> file, I used the following tools:\u00a0<\/p>\n<ul>\n<li>Python 3.8<\/li>\n<li><a href=\"https:\/\/blog.finxter.com\/best-python-ide\/\" target=\"_blank\" rel=\"noreferrer noopener\">PyCharm IDE<\/a> for convenient coding experience\u00a0<\/li>\n<li>Sublime Text Editor for a manual check of the <code>.csv<\/code> file\u00a0<\/li>\n<\/ul>\n<p>By default, you can read CSV files using other tools or even default, pre-installed programs you have on your machine, so it is just a matter of choice what tools to use. The codebase can be executed anywhere with the same results.&nbsp;<\/p>\n<h2>What is the CSV Format?\u00a0<\/h2>\n<p>Nowadays, three main data formats are used for passing data from one machine to another: CSV, XML, and JSON.&nbsp;<\/p>\n<p>The abbreviation CSV stands for \u201ccomma-separated values\u201d. As the name implies, it is just a list of elements separated by commas. It is the most straightforward format to transfer data and should be used if <\/p>\n<ol>\n<li>you need the most compact file size, or\u00a0<\/li>\n<li>you have a flat data structure.\u00a0<\/li>\n<\/ol>\n<p>Keep in mind that CSV files do not give you such flexibility in presenting the data as the other two options.\u00a0<\/p>\n<p><strong>Related articles:<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/blog.finxter.com\/pandas-to_csv\/\">Pandas DataFrame to CSV<\/a><\/li>\n<li><a href=\"https:\/\/blog.finxter.com\/how-to-convert-a-list-of-lists-to-a-csv-file-in-python\/\">How to Convert a List of Lists to a CSV File in Python?<\/a><\/li>\n<\/ul>\n<h2>Example Task&nbsp;<\/h2>\n<p>This is a real-world task in a simplified form.&nbsp;<strong>The goal is to read data from CSV file (70 KB) and form a list of all series codes present in the second line of it.&nbsp;<\/strong><\/p>\n<p>The provided data is an open statistical data from the European Central Bank (ECB) in CSV format and present financial flows during the period. The file consist of three main fields:\u00a0<\/p>\n<ol>\n<li>series code\u00a0<\/li>\n<li>observed date (period, e.g., 2019Q4, 2020Q1, etc.)\u00a0<\/li>\n<li>observed value (data point, float number)\u00a0<\/li>\n<\/ol>\n<p><a href=\"http:\/\/sdw.ecb.europa.eu\/export.do? mergeFilter=&amp;removeItem=L&amp;REF_AREA.252=I8&amp;COUNTERPART_AREA.252= W0&amp;rc=&amp;ec=&amp;legendPub=published&amp;oc=&amp;df=true&amp;DATASET=0&amp;dc=&amp;ACCOU NTING_ENTRY.252=A&amp;node=9689710&amp;showHide=&amp;removedItemList=&amp;pb=&amp;l egendNor=&amp;activeTab=&amp;STO.252=F&amp;STO.252=K7&amp;STO.252=KA&amp;STO.252=LE &amp;legendRef=reference&amp;REF_SECTOR.252=S1&amp;exportType=csv&amp;ajaxTab=true\" target=\"_blank\" rel=\"noreferrer noopener\">Direct download link. <\/a><\/p>\n<h2>Data Preparation\u00a0<\/h2>\n<p>To focus on the parsing option, I suggest you download and extract a file beforehand. In the examples, the file will be placed on the Desktop, but you can put it anywhere you like.\u00a0<\/p>\n<p>Script:\u00a0<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import os import wget link = \"http:\/\/sdw.ecb.europa.eu\/export.do? mergeFilter=&amp;removeItem=L&amp;REF_AREA.252=I8&amp;COUNTERPART_AREA.252=W0 &amp;rc=&amp;ec=&amp;legendPub=published&amp;oc=&amp;df=true&amp;DATASET=0&amp;dc=&amp;ACCOUNTING _ENTRY.252=A&amp;node=9689710&amp;showHide=&amp;removedItemList=&amp;pb=&amp;legendNo r=&amp;activeTab=&amp;STO.252=F&amp;STO.252=K7&amp;STO.252=KA&amp;STO.252=LE&amp;legendRe f=reference&amp;REF_SECTOR.252=S1&amp;exportType=csv&amp;ajaxTab=true\" path = f\"C:{os.environ['HOMEPATH']}\\\\Desktop\\\\data.csv\" wget.download(link, path) <\/pre>\n<p>Script breakdown:&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import os import wget<\/pre>\n<p>Import statements are used to install code base which was written by someone else before and is ready to use just by referring to it. Some them (e.g. <code>wget<\/code>) should be additionally installed using similar command:\u00a0<\/p>\n<p>The following command will install the latest version of a module and its dependencies from the Python Packaging Index:&nbsp;<\/p>\n<p><code>python -m pip install SomePackage\u00a0<\/code><\/p>\n<p><code>os<\/code> package is used to perform basic operation with files and folders in your operating system.\u00a0<\/p>\n<p><code>wget<\/code> package is used to download files from websites.\u00a0<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">link = \"http:\/\/sdw.ecb.europa.eu\/export.do? mergeFilter=&amp;removeItem=L&amp;REF_AREA.252=I8&amp;COUNTERPART_AREA.252=W0 &amp;rc=&amp;ec=&amp;legendPub=published&amp;oc=&amp;df=true&amp;DATASET=0&amp;dc=&amp;ACCOUNTING _ENTRY.252=A&amp;node=9689710&amp;showHide=&amp;removedItemList=&amp;pb=&amp;legendNo r=&amp;activeTab=&amp;STO.252=F&amp;STO.252=K7&amp;STO.252=KA&amp;STO.252=LE&amp;legendRe f=reference&amp;REF_SECTOR.252=S1&amp;exportType=csv&amp;ajaxTab=true\" <\/pre>\n<p>The string variable <code>link<\/code> is created which represents a direct download link. This link can be easily tested in any web-browser.\u00a0<\/p>\n<p><code>path = f\"C:{os.environ['HOMEPATH']}\\\\Desktop\\\\data.csv\"\u00a0<\/code><\/p>\n<p>string variable <code>path<\/code> is created which represents a path in your system where files will be downloaded later.\u00a0<\/p>\n<p>The prefix \u201c<code>f<\/code>\u201d before the string makes it an \u201cf-string\u201d which means that you can use other variables in the string by using <code>{placeholders}<\/code>. In this case, variable <code>os.environ[\u2018HOMEPATH\u2019]<\/code> refers to system variable (declared in the Windows system by default, not in your python script) and puts it into a string we just created. By default, <code>HOMEPATH<\/code> refers to the current user by <code>C:\\Users\\%user%<\/code> (you).\u00a0<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">wget.download(link, path)<\/pre>\n<p>The function call <code>wget.download()<\/code> triggers the file download from previously specified link and saves it by previously specified path.\u00a0<\/p>\n<p>The result of this step is a ready-to-use CSV file on your Desktop. Now we can parse data from CSV file and extract series codes to list.&nbsp;<\/p>\n<h2>Data Exploration\u00a0<\/h2>\n<p>It is a good practice to explore data before you start parsing it. In this case, you can see that series codes are present in the second row of <code>data.csv<\/code>.\u00a0<\/p>\n<h3>Option 1 (the Fastest): Use the Standard Library\u00a0<\/h3>\n<p>This is the fastest option of reading a file using the standard library. Assuming the file is prepared and located on your Desktop, you can use the script below. This is the easiest way of getting data on the list. However, it has its drawbacks.&nbsp;<\/p>\n<p>Input:\u00a0<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import os path = f\"C:{os.environ['HOMEPATH']}\\\\Desktop\\\\data.csv\" with open(path, \"r\") as f: print(list(f.readlines()[1].split(\",\"))[1:]) <\/pre>\n<p>Output:&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[\u2018QSA.Q.N.I8.W0.S1.S1.N.A.F.F._Z._Z.XDC._T.S.V.N._T\u2019,... \u2018QSA.Q.N.I8.W0.S1.S1.N.A.LE.F89.T._Z.XDC._T.S.V.N._T\u2019]<\/pre>\n<p>Script breakdown:\u00a0<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">with open(path, \"r\") as f: print(list(f.readlines()[1].split(\",\"))[1:]) <\/pre>\n<p>The import statement and variable assignment is skipped as it was described previously and the main attention is given to the last statements.\u00a0<\/p>\n<p>This is a combined statement of three parts:&nbsp;<\/p>\n<ol>\n<li>The \u201cwith\u201d statement, in the general meaning, allows us to define what code block (actions) we want to do with the object while it is \u201cactive\u201d. In this case, we want to tell python that it has to do some actions while the file is open, and when all statements are completed, close it.\u00a0<\/li>\n<li>The \u201copen\u201d statement allows us to open a file and place it is into Python memory. In this case, we open the previously given file (\u201cpath\u201d variable) in \u201cr\u201d mode, which stands for \u201cread\u201d-only mode.\u00a0<\/li>\n<li>The \u201cprint\u201d statement allows you to see output on your screen. In this case we\n<ol>\n<li>take file object <code>f<\/code> with <code>open(path, 'r') as f<\/code>, <\/li>\n<li>read second line with <code>f.readlines()[1]<\/code>, <\/li>\n<li>split the line by the <code>,<\/code> separator in <code>f.readlines()[1].split(\u201c,\u201d)<\/code>, <\/li>\n<li>convert the to list <code>list(f.readlines()[1].split(\u201c,\u201d))<\/code>, <\/li>\n<li>return the list starting from second element as the first one is empty in <code>list(f.readlines()[1].split(\u201c,\u201d))[1:]<\/code>, and <\/li>\n<li>print the result in <code>print(list(f.readlines()[1].split(\u201c,\u201d))[1:])<\/code>.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>There is no specific documentation as this code base uses standard library which is built-in in Python.\u00a0<\/p>\n<p><strong>Pros\/Cons<\/strong>: Such an approach allows the user to get an instant view of the CSV file and select the required data. You can use this for spot checks and simple transformations. It is important to remember that such an approach has the lowest amount of adjustable settings, and it requires lots of workarounds when transformations are complicated.\u00a0<\/p>\n<h3>Option 2 (the Most Preferred): Use pandas.read_csv()\u00a0<\/h3>\n<p>The most preferred option of reading <code>.csv<\/code> file is using the Pandas library (<a rel=\"noreferrer noopener\" href=\"https:\/\/blog.finxter.com\/pandas-cheat-sheets\/\" target=\"_blank\">Pandas<\/a><a href=\"https:\/\/blog.finxter.com\/pandas-cheat-sheets\/\" target=\"_blank\" rel=\"noreferrer noopener\"> <\/a><a rel=\"noreferrer noopener\" href=\"https:\/\/blog.finxter.com\/pandas-cheat-sheets\/\" target=\"_blank\">cheat sheets here<\/a>). Pandas is a fast, powerful, flexible, and easy to use open-source data analysis and manipulation tool, built on top of the <a href=\"https:\/\/blog.finxter.com\/python-crash-course\/\" target=\"_blank\" rel=\"noreferrer noopener\">Python programming<\/a> language.\u00a0<\/p>\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/blog.finxter.com\/how-to-calculate-the-column-standard-deviation-of-a-dataframe-in-python-pandas\/\" target=\"_blank\">Pandas <\/a>is usually used for more advanced data analysis where data is stored in a \u201cDataFrame\u201d which is basically like a table in excel. A DataFrame has a header row and an index column so that you can refer to table values by \u201ccolumn x row\u201d intersection.\u00a0<\/p>\n<p>Script:\u00a0<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import os import pandas as pd path = f\u201dC:{os.environ[\u2018HOMEPATH\u2019]}\\\\Desktop\\\\data.csv\u201d df = pd.read_csv(path, delimiter=\u201d,\u201d, skiprows=[0]) list = df.columns.to_list()[1:] print(list) <\/pre>\n<p>Output:&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[\u2018QSA.Q.N.I8.W0.S1.S1.N.A.F.F._Z._Z.XDC._T.S.V.N._T\u2019,... \u2018QSA.Q.N.I8.W0.S1.S1.N.A.LE.F89.T._Z.XDC._T.S.V.N._T\u2019] <\/pre>\n<p>Script breakdown:&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">df = pd.read_csv(path, delimiter=\u201d,\u201d, skiprows=[0])<\/pre>\n<p>In this dataframe, variable <code>df<\/code> is created from the <code>.csv<\/code> file by executing pandas method <code>read_csv<\/code>. In this case the method requires several arguments: <code>file<\/code>, <code>delimiter<\/code> and <code>skiprows<\/code>.\u00a0<\/p>\n<p>The file is the same as used before. The delimiter is \u201c,\u201d which is a default option for .csv files, and it might be skipped. But it&#8217;s good to know that you can use any other delimiter.&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">list = df.columns.to_list()[1:] print(list)<\/pre>\n<p>This line selects the column headers and puts them into a list starting from the second element going forward. The result is printed.&nbsp;<\/p>\n<p><strong>Pros\/Cons<\/strong>: Such an approach is relatively fast, visually appealing to the reader, and is fully adjustable using a consistent approach. Comparing to the first option when standard libraries are used, it requires additional packages to be installed. I personally believe that it is not a problem, and such a drawback can be neglected. But another point should not be skipped \u2014 the amount of data. This approach is inefficient when you need lots of \u201cside\u201d data, which is useless for your purpose.\u00a0<\/p>\n<p>Full documentation is available <a href=\"https:\/\/pandas.pydata.org\/pandas-docs\/stable\/reference\/api\/pandas.read_csv.html\" target=\"_blank\" rel=\"noreferrer noopener\">here <\/a>with more guides and instructions on how to use it.\u00a0<\/p>\n<h3>Option 3 (optional): use csv.reader()&nbsp;<\/h3>\n<p>There is also another way how to read <code>.csv<\/code> files, which might be useful in certain circumstances. The <code>csv<\/code> module implements classes to read and write tabular data in CSV format. It allows programmers to say, \u201cwrite this data in the format preferred by Excel,\u201d or \u201cread data from this file which was generated by Excel,\u201d without knowing the precise details of the CSV format used by Excel. Programmers can also describe the CSV formats understood by other applications or define their own special-purpose CSV formats.\u00a0<\/p>\n<p>Script:\u00a0<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import os import csv path = f\"C:{os.environ['HOMEPATH']}\\\\Desktop\\\\data.csv\" with open(path, 'r') as f: wines = list(csv.reader(f, delimiter=\",\"))[1][1:] <\/pre>\n<p>Output:&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[\u2018QSA.Q.N.I8.W0.S1.S1.N.A.F.F._Z._Z.XDC._T.S.V.N._T\u2019,... \u2018QSA.Q.N.I8.W0.S1.S1.N.A.LE.F89.T._Z.XDC._T.S.V.N._T\u2019]<\/pre>\n<p>Script breakdown:\u00a0<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">with open(path, 'r') as f: wines = list(csv.reader(f, delimiter=\",\"))[1][1:] <\/pre>\n<p><code>csv.reader()<\/code> is a method which allows you to parse <code>.csv<\/code> file with specified delimiter.\u00a0<\/p>\n<p>After that, we select the second row using first brackets \u201c<code>[1]<\/code>\u201d and after that, select all elements from that list starting from second \u201c<code>[1:]<\/code>\u201d using <a href=\"https:\/\/blog.finxter.com\/introduction-to-slicing-in-python\/\" target=\"_blank\" rel=\"noreferrer noopener\">slicing<\/a>.\u00a0<\/p>\n<p>As this is a standard package, there is documentation at the <a href=\"https:\/\/docs.python.org\/3\/library\/csv.html\" target=\"_blank\" rel=\"noreferrer noopener\">official python website<\/a>:&nbsp;<\/p>\n<p><strong>Pros\/Cons<\/strong>: Such an approach is relatively simple and has just a few lines of code. On the other hand, it requires an additional package to be installed.\u00a0<\/p>\n<h2>Summary&nbsp;<\/h2>\n<p>You should remember that there are different ways of reading data from CSV files. Select the one which suits your needs most or has the best performance and runtime.\u00a0<\/p>\n<h2>Where to Go From Here?<\/h2>\n<p>Enough theory, let\u2019s get some practice!<\/p>\n<p>To become successful in coding, you need to get out there and solve real problems for real people. That\u2019s how you can become a six-figure earner easily. And that\u2019s how you polish the skills you really need in practice. After all, what\u2019s the use of learning theory that nobody ever needs?<\/p>\n<p><strong>Practice projects is how you sharpen your saw in coding!<\/strong><\/p>\n<p>Do you want to become a code master by focusing on practical code projects that actually earn you money and solve problems for people?<\/p>\n<p>Then become a Python freelance developer! It\u2019s the best way of approaching the task of improving your Python skills\u2014even if you are a complete beginner.<\/p>\n<p>Join my free webinar <a rel=\"noreferrer noopener\" href=\"https:\/\/blog.finxter.com\/webinar-freelancer\/\" target=\"_blank\">\u201cHow to Build Your High-Income Skill Python\u201d<\/a> and watch how I grew my coding business online and how you can, too\u2014from the comfort of your own home.<\/p>\n<p><a href=\"https:\/\/blog.finxter.com\/webinar-freelancer\/\" target=\"_blank\" rel=\"noreferrer noopener\">Join the free webinar now!<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>6 min read\u00a0 How to read data from a .csv file and add its column or row to the list? There are three main ways:\u00a0 Option 1 (the quickest): use the standard library\u00a0 Option 2 (the most preferred): use pandas.read_csv()\u00a0 Option 3 (optional): use csv.reader()\u00a0 Short answer&nbsp; The simplest option to read a .csv file [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[857],"tags":[73,468,528],"class_list":["post-112431","post","type-post","status-publish","format-standard","hentry","category-python-tut","tag-programming","tag-python","tag-tutorial"],"_links":{"self":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/112431","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/comments?post=112431"}],"version-history":[{"count":0,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/112431\/revisions"}],"wp:attachment":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/media?parent=112431"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/categories?post=112431"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/tags?post=112431"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}