New post in drafts and almost ready. Also on a new computer, so had to re-download all the theme and submodules. Thinking of just converting the box submodule to be native to my blog for easier maintenence. Need to proof this last post on google sheets and publish tomorrow morning.
This commit is contained in:
439
public/posts/parsing_files_with_python.html
Normal file
439
public/posts/parsing_files_with_python.html
Normal file
@ -0,0 +1,439 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="auto">
|
||||
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="robots" content="index, follow">
|
||||
<title>Using Python to Parse File Contents | Norm-working Packets 💾</title>
|
||||
<meta name="keywords" content="">
|
||||
<meta name="description" content="I often find myself with various files that need to be parsed and transferred to a CSV. This is how I use python to parse a long and convoluted file.">
|
||||
<meta name="author" content="Me">
|
||||
<link rel="canonical" href="//localhost:1313/posts/parsing_files_with_python.html">
|
||||
<link crossorigin="anonymous" href="../assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z+V9+cO1A=" rel="preload stylesheet" as="style">
|
||||
<link rel="icon" href="//localhost:1313/favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="//localhost:1313/favicon-16x16.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="//localhost:1313/rsmsncircles.ico">
|
||||
<link rel="apple-touch-icon" href="//localhost:1313/apple-touch-icon.png">
|
||||
<link rel="mask-icon" href="//localhost:1313/safari-pinned-tab.svg">
|
||||
<meta name="theme-color" content="#2e2e33">
|
||||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||||
<link rel="alternate" hreflang="en" href="//localhost:1313/posts/parsing_files_with_python.html">
|
||||
<noscript>
|
||||
<style>
|
||||
#theme-toggle,
|
||||
.top-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript><meta property="og:title" content="Using Python to Parse File Contents" />
|
||||
<meta property="og:description" content="I often find myself with various files that need to be parsed and transferred to a CSV. This is how I use python to parse a long and convoluted file." />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:url" content="//localhost:1313/posts/parsing_files_with_python.html" /><meta property="article:section" content="posts" />
|
||||
<meta property="article:published_time" content="2023-11-02T13:57:07-04:00" />
|
||||
<meta property="article:modified_time" content="2023-11-02T13:57:07-04:00" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="Using Python to Parse File Contents"/>
|
||||
<meta name="twitter:description" content="I often find myself with various files that need to be parsed and transferred to a CSV. This is how I use python to parse a long and convoluted file."/>
|
||||
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "BreadcrumbList",
|
||||
"itemListElement": [
|
||||
{
|
||||
"@type": "ListItem",
|
||||
"position": 1 ,
|
||||
"name": "Posts",
|
||||
"item": "//localhost:1313/posts.html"
|
||||
}
|
||||
{
|
||||
"@type": "ListItem",
|
||||
"position": 1 ,
|
||||
"name": "Using Python to Parse File Contents",
|
||||
"item": "//localhost:1313/posts/parsing_files_with_python.html"
|
||||
}
|
||||
]
|
||||
}
|
||||
</script>
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "BlogPosting",
|
||||
"headline": "Using Python to Parse File Contents",
|
||||
"name": "Using Python to Parse File Contents",
|
||||
"description": "I often find myself with various files that need to be parsed and transferred to a CSV. This is how I use python to parse a long and convoluted file.",
|
||||
"keywords": [
|
||||
""
|
||||
],
|
||||
"articleBody": "Full Script import csv import pandas as pd import re LISTTUPLE = [] LINELIST = [] COUNT = 0 DOMAIN_DICT = {} df = pd.DataFrame() with open('./Workflows_js_nodes.js', 'r') as file: for num, line in enumerate(file, 1): if \"\u003c\u003c\u003c\" in line: LINELIST.append(num) if \"\u003e\u003e\u003e\" in line: LINELIST.append(num) LINELIST = sorted(LINELIST) # print(LINELIST) x = len(LINELIST) try: while COUNT in range(x): COUNT += 1 temp_tupe = (LINELIST[0], LINELIST[1]) LISTTUPLE.append(temp_tupe) LINELIST = LINELIST[2:] # LINELIST.pop(1) except IndexError as e: pass for pagetuple in LISTTUPLE: res_list = [] domain_line = int(pagetuple[0]-2) seg_start = int(pagetuple[0]-1) seg_end = int(pagetuple[1]-1) with open('./Workflows_js_nodes.js', 'r') as file: lines = file.readlines() title = lines[domain_line][4:-1] segment = lines[seg_start:seg_end] for line in segment: result = re.search(r\"(?:'@[a-z|.]+.[a-z]{3})\", line) if result: res = result.group()[1:] res_list.append(res) DOMAIN_DICT[title] = res_list df = df.from_dict(DOMAIN_DICT, orient='index') df.to_csv('~/export_file.csv') ",
|
||||
"wordCount" : "129",
|
||||
"inLanguage": "en",
|
||||
"datePublished": "2023-11-02T13:57:07-04:00",
|
||||
"dateModified": "2023-11-02T13:57:07-04:00",
|
||||
"author":{
|
||||
"@type": "Person",
|
||||
"name": "Me"
|
||||
},
|
||||
"mainEntityOfPage": {
|
||||
"@type": "WebPage",
|
||||
"@id": "//localhost:1313/posts/parsing_files_with_python.html"
|
||||
},
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "Norm-working Packets 💾",
|
||||
"logo": {
|
||||
"@type": "ImageObject",
|
||||
"url": "//localhost:1313/favicon.ico"
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body class=" dark" id="top">
|
||||
<script>
|
||||
if (localStorage.getItem("pref-theme") === "light") {
|
||||
document.body.classList.remove('dark')
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<header class="header">
|
||||
<nav class="nav">
|
||||
<div class="logo">
|
||||
<a href="//localhost:1313/" accesskey="h" title="Norm-working Packets 💾 (Alt + H)">Norm-working Packets 💾</a>
|
||||
<div class="logo-switches">
|
||||
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
||||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||||
</svg>
|
||||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</button>
|
||||
<ul class="lang-switch"><li>|</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="//localhost:1313/posts.html" title="Posts">
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
|
||||
<article class="post-single">
|
||||
<header class="post-header">
|
||||
<div class="breadcrumbs"><a href="//localhost:1313/">Home</a> » <a href="//localhost:1313/posts.html">Posts</a></div>
|
||||
<h1 class="post-title entry-hint-parent">
|
||||
Using Python to Parse File Contents
|
||||
<span class="entry-hint" title="Draft">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="35" viewBox="0 -960 960 960" fill="currentColor">
|
||||
<path
|
||||
d="M160-410v-60h300v60H160Zm0-165v-60h470v60H160Zm0-165v-60h470v60H160Zm360 580v-123l221-220q9-9 20-13t22-4q12 0 23 4.5t20 13.5l37 37q9 9 13 20t4 22q0 11-4.5 22.5T862.09-380L643-160H520Zm300-263-37-37 37 37ZM580-220h38l121-122-18-19-19-18-122 121v38Zm141-141-19-18 37 37-18-19Z" />
|
||||
</svg>
|
||||
</span>
|
||||
</h1>
|
||||
<div class="post-description">
|
||||
I often find myself with various files that need to be parsed and transferred to a CSV. This is how I use python to parse a long and convoluted file.
|
||||
</div>
|
||||
<div class="post-meta"><span title='2023-11-02 13:57:07 -0400 EDT'>November 2, 2023</span> · 1 min · 129 words · Me
|
||||
|
||||
</div>
|
||||
</header> <div class="toc">
|
||||
<details >
|
||||
<summary accesskey="c" title="(Alt + C)">
|
||||
<span class="details">Table of Contents</span>
|
||||
</summary>
|
||||
|
||||
<div class="inner"><nav id="TableOfContents">
|
||||
<ul>
|
||||
<li>
|
||||
<ul>
|
||||
<li><a href="#full-script">Full Script</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
|
||||
<div class="post-content"><h3 id="full-script">Full Script<a hidden class="anchor" aria-hidden="true" href="#full-script">#</a></h3>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">import</span> csv
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> pandas <span style="color:#66d9ef">as</span> pd
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> re
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>LISTTUPLE <span style="color:#f92672">=</span> []
|
||||
</span></span><span style="display:flex;"><span>LINELIST <span style="color:#f92672">=</span> []
|
||||
</span></span><span style="display:flex;"><span>COUNT <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>
|
||||
</span></span><span style="display:flex;"><span>DOMAIN_DICT <span style="color:#f92672">=</span> {}
|
||||
</span></span><span style="display:flex;"><span>df <span style="color:#f92672">=</span> pd<span style="color:#f92672">.</span>DataFrame()
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">with</span> open(<span style="color:#e6db74">'./Workflows_js_nodes.js'</span>, <span style="color:#e6db74">'r'</span>) <span style="color:#66d9ef">as</span> file:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">for</span> num, line <span style="color:#f92672">in</span> enumerate(file, <span style="color:#ae81ff">1</span>):
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> <span style="color:#e6db74">"<<<"</span> <span style="color:#f92672">in</span> line:
|
||||
</span></span><span style="display:flex;"><span> LINELIST<span style="color:#f92672">.</span>append(num)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> <span style="color:#e6db74">">>>"</span> <span style="color:#f92672">in</span> line:
|
||||
</span></span><span style="display:flex;"><span> LINELIST<span style="color:#f92672">.</span>append(num)
|
||||
</span></span><span style="display:flex;"><span>LINELIST <span style="color:#f92672">=</span> sorted(LINELIST)
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"># print(LINELIST)</span>
|
||||
</span></span><span style="display:flex;"><span>x <span style="color:#f92672">=</span> len(LINELIST)
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">try</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">while</span> COUNT <span style="color:#f92672">in</span> range(x):
|
||||
</span></span><span style="display:flex;"><span> COUNT <span style="color:#f92672">+=</span> <span style="color:#ae81ff">1</span>
|
||||
</span></span><span style="display:flex;"><span> temp_tupe <span style="color:#f92672">=</span> (LINELIST[<span style="color:#ae81ff">0</span>], LINELIST[<span style="color:#ae81ff">1</span>])
|
||||
</span></span><span style="display:flex;"><span> LISTTUPLE<span style="color:#f92672">.</span>append(temp_tupe)
|
||||
</span></span><span style="display:flex;"><span> LINELIST <span style="color:#f92672">=</span> LINELIST[<span style="color:#ae81ff">2</span>:]
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#75715e"># LINELIST.pop(1)</span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">except</span> <span style="color:#a6e22e">IndexError</span> <span style="color:#66d9ef">as</span> e:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">pass</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> pagetuple <span style="color:#f92672">in</span> LISTTUPLE:
|
||||
</span></span><span style="display:flex;"><span> res_list <span style="color:#f92672">=</span> []
|
||||
</span></span><span style="display:flex;"><span> domain_line <span style="color:#f92672">=</span> int(pagetuple[<span style="color:#ae81ff">0</span>]<span style="color:#f92672">-</span><span style="color:#ae81ff">2</span>)
|
||||
</span></span><span style="display:flex;"><span> seg_start <span style="color:#f92672">=</span> int(pagetuple[<span style="color:#ae81ff">0</span>]<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>)
|
||||
</span></span><span style="display:flex;"><span> seg_end <span style="color:#f92672">=</span> int(pagetuple[<span style="color:#ae81ff">1</span>]<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">with</span> open(<span style="color:#e6db74">'./Workflows_js_nodes.js'</span>, <span style="color:#e6db74">'r'</span>) <span style="color:#66d9ef">as</span> file:
|
||||
</span></span><span style="display:flex;"><span> lines <span style="color:#f92672">=</span> file<span style="color:#f92672">.</span>readlines()
|
||||
</span></span><span style="display:flex;"><span> title <span style="color:#f92672">=</span> lines[domain_line][<span style="color:#ae81ff">4</span>:<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>]
|
||||
</span></span><span style="display:flex;"><span> segment <span style="color:#f92672">=</span> lines[seg_start:seg_end]
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">for</span> line <span style="color:#f92672">in</span> segment:
|
||||
</span></span><span style="display:flex;"><span> result <span style="color:#f92672">=</span> re<span style="color:#f92672">.</span>search(<span style="color:#e6db74">r</span><span style="color:#e6db74">"(?:'@[a-z|.]+.[a-z]</span><span style="color:#e6db74">{3}</span><span style="color:#e6db74">)"</span>, line)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> result:
|
||||
</span></span><span style="display:flex;"><span> res <span style="color:#f92672">=</span> result<span style="color:#f92672">.</span>group()[<span style="color:#ae81ff">1</span>:]
|
||||
</span></span><span style="display:flex;"><span> res_list<span style="color:#f92672">.</span>append(res)
|
||||
</span></span><span style="display:flex;"><span> DOMAIN_DICT[title] <span style="color:#f92672">=</span> res_list
|
||||
</span></span><span style="display:flex;"><span>df <span style="color:#f92672">=</span> df<span style="color:#f92672">.</span>from_dict(DOMAIN_DICT, orient<span style="color:#f92672">=</span><span style="color:#e6db74">'index'</span>)
|
||||
</span></span><span style="display:flex;"><span>df<span style="color:#f92672">.</span>to_csv(<span style="color:#e6db74">'~/export_file.csv'</span>)
|
||||
</span></span></code></pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
<footer class="post-footer">
|
||||
<ul class="post-tags">
|
||||
</ul>
|
||||
<nav class="paginav">
|
||||
<a class="prev" href="//localhost:1313/posts/find_and_replace_in_neovim.html">
|
||||
<span class="title">« Prev</span>
|
||||
<br>
|
||||
<span>Neovim Subtitute Magic</span>
|
||||
</a>
|
||||
<a class="next" href="//localhost:1313/posts/neovim-a-config-debug-tale.html">
|
||||
<span class="title">Next »</span>
|
||||
<br>
|
||||
<span>Neovim: A Config Debugging Tale</span>
|
||||
</a>
|
||||
</nav>
|
||||
|
||||
|
||||
<ul class="share-buttons">
|
||||
<li>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Using Python to Parse File Contents on x"
|
||||
href="https://x.com/intent/tweet/?text=Using%20Python%20to%20Parse%20File%20Contents&url=%2f%2flocalhost%3a1313%2fposts%2fparsing_files_with_python.html&hashtags=">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M512 62.554 L 512 449.446 C 512 483.97 483.97 512 449.446 512 L 62.554 512 C 28.03 512 0 483.97 0 449.446 L 0 62.554 C 0 28.03 28.029 0 62.554 0 L 449.446 0 C 483.971 0 512 28.03 512 62.554 Z M 269.951 190.75 L 182.567 75.216 L 56 75.216 L 207.216 272.95 L 63.9 436.783 L 125.266 436.783 L 235.9 310.383 L 332.567 436.783 L 456 436.783 L 298.367 228.367 L 432.367 75.216 L 371.033 75.216 Z M 127.633 110 L 164.101 110 L 383.481 400.065 L 349.5 400.065 Z" />
|
||||
</svg>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Using Python to Parse File Contents on linkedin"
|
||||
href="https://www.linkedin.com/shareArticle?mini=true&url=%2f%2flocalhost%3a1313%2fposts%2fparsing_files_with_python.html&title=Using%20Python%20to%20Parse%20File%20Contents&summary=Using%20Python%20to%20Parse%20File%20Contents&source=%2f%2flocalhost%3a1313%2fposts%2fparsing_files_with_python.html">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-288.985,423.278l0,-225.717l-75.04,0l0,225.717l75.04,0Zm270.539,0l0,-129.439c0,-69.333 -37.018,-101.586 -86.381,-101.586c-39.804,0 -57.634,21.891 -67.617,37.266l0,-31.958l-75.021,0c0.995,21.181 0,225.717 0,225.717l75.02,0l0,-126.056c0,-6.748 0.486,-13.492 2.474,-18.315c5.414,-13.475 17.767,-27.434 38.494,-27.434c27.135,0 38.007,20.707 38.007,51.037l0,120.768l75.024,0Zm-307.552,-334.556c-25.674,0 -42.448,16.879 -42.448,39.002c0,21.658 16.264,39.002 41.455,39.002l0.484,0c26.165,0 42.452,-17.344 42.452,-39.002c-0.485,-22.092 -16.241,-38.954 -41.943,-39.002Z" />
|
||||
</svg>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Using Python to Parse File Contents on reddit"
|
||||
href="https://reddit.com/submit?url=%2f%2flocalhost%3a1313%2fposts%2fparsing_files_with_python.html&title=Using%20Python%20to%20Parse%20File%20Contents">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-3.446,265.638c0,-22.964 -18.616,-41.58 -41.58,-41.58c-11.211,0 -21.361,4.457 -28.841,11.666c-28.424,-20.508 -67.586,-33.757 -111.204,-35.278l18.941,-89.121l61.884,13.157c0.756,15.734 13.642,28.29 29.56,28.29c16.407,0 29.706,-13.299 29.706,-29.701c0,-16.403 -13.299,-29.702 -29.706,-29.702c-11.666,0 -21.657,6.792 -26.515,16.578l-69.105,-14.69c-1.922,-0.418 -3.939,-0.042 -5.585,1.036c-1.658,1.073 -2.811,2.761 -3.224,4.686l-21.152,99.438c-44.258,1.228 -84.046,14.494 -112.837,35.232c-7.468,-7.164 -17.589,-11.591 -28.757,-11.591c-22.965,0 -41.585,18.616 -41.585,41.58c0,16.896 10.095,31.41 24.568,37.918c-0.639,4.135 -0.99,8.328 -0.99,12.576c0,63.977 74.469,115.836 166.33,115.836c91.861,0 166.334,-51.859 166.334,-115.836c0,-4.218 -0.347,-8.387 -0.977,-12.493c14.564,-6.47 24.735,-21.034 24.735,-38.001Zm-119.474,108.193c-20.27,20.241 -59.115,21.816 -70.534,21.816c-11.428,0 -50.277,-1.575 -70.522,-21.82c-3.007,-3.008 -3.007,-7.882 0,-10.889c3.003,-2.999 7.882,-3.003 10.885,0c12.777,12.781 40.11,17.317 59.637,17.317c19.522,0 46.86,-4.536 59.657,-17.321c3.016,-2.999 7.886,-2.995 10.885,0.008c3.008,3.011 3.003,7.882 -0.008,10.889Zm-5.23,-48.781c-16.373,0 -29.701,-13.324 -29.701,-29.698c0,-16.381 13.328,-29.714 29.701,-29.714c16.378,0 29.706,13.333 29.706,29.714c0,16.374 -13.328,29.698 -29.706,29.698Zm-160.386,-29.702c0,-16.381 13.328,-29.71 29.714,-29.71c16.369,0 29.689,13.329 29.689,29.71c0,16.373 -13.32,29.693 -29.689,29.693c-16.386,0 -29.714,-13.32 -29.714,-29.693Z" />
|
||||
</svg>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Using Python to Parse File Contents on facebook"
|
||||
href="https://facebook.com/sharer/sharer.php?u=%2f%2flocalhost%3a1313%2fposts%2fparsing_files_with_python.html">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-106.468,0l0,-192.915l66.6,0l12.672,-82.621l-79.272,0l0,-53.617c0,-22.603 11.073,-44.636 46.58,-44.636l36.042,0l0,-70.34c0,0 -32.71,-5.582 -63.982,-5.582c-65.288,0 -107.96,39.569 -107.96,111.204l0,62.971l-72.573,0l0,82.621l72.573,0l0,192.915l-191.104,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Z" />
|
||||
</svg>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Using Python to Parse File Contents on whatsapp"
|
||||
href="https://api.whatsapp.com/send?text=Using%20Python%20to%20Parse%20File%20Contents%20-%20%2f%2flocalhost%3a1313%2fposts%2fparsing_files_with_python.html">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-58.673,127.703c-33.842,-33.881 -78.847,-52.548 -126.798,-52.568c-98.799,0 -179.21,80.405 -179.249,179.234c-0.013,31.593 8.241,62.428 23.927,89.612l-25.429,92.884l95.021,-24.925c26.181,14.28 55.659,21.807 85.658,21.816l0.074,0c98.789,0 179.206,-80.413 179.247,-179.243c0.018,-47.895 -18.61,-92.93 -52.451,-126.81Zm-126.797,275.782l-0.06,0c-26.734,-0.01 -52.954,-7.193 -75.828,-20.767l-5.441,-3.229l-56.386,14.792l15.05,-54.977l-3.542,-5.637c-14.913,-23.72 -22.791,-51.136 -22.779,-79.287c0.033,-82.142 66.867,-148.971 149.046,-148.971c39.793,0.014 77.199,15.531 105.329,43.692c28.128,28.16 43.609,65.592 43.594,105.4c-0.034,82.149 -66.866,148.983 -148.983,148.984Zm81.721,-111.581c-4.479,-2.242 -26.499,-13.075 -30.604,-14.571c-4.105,-1.495 -7.091,-2.241 -10.077,2.241c-2.986,4.483 -11.569,14.572 -14.182,17.562c-2.612,2.988 -5.225,3.364 -9.703,1.12c-4.479,-2.241 -18.91,-6.97 -36.017,-22.23c-13.314,-11.876 -22.304,-26.542 -24.916,-31.026c-2.612,-4.484 -0.279,-6.908 1.963,-9.14c2.016,-2.007 4.48,-5.232 6.719,-7.847c2.24,-2.615 2.986,-4.484 4.479,-7.472c1.493,-2.99 0.747,-5.604 -0.374,-7.846c-1.119,-2.241 -10.077,-24.288 -13.809,-33.256c-3.635,-8.733 -7.327,-7.55 -10.077,-7.688c-2.609,-0.13 -5.598,-0.158 -8.583,-0.158c-2.986,0 -7.839,1.121 -11.944,5.604c-4.105,4.484 -15.675,15.32 -15.675,37.364c0,22.046 16.048,43.342 18.287,46.332c2.24,2.99 31.582,48.227 76.511,67.627c10.685,4.615 19.028,7.371 25.533,9.434c10.728,3.41 20.492,2.929 28.209,1.775c8.605,-1.285 26.499,-10.833 30.231,-21.295c3.732,-10.464 3.732,-19.431 2.612,-21.298c-1.119,-1.869 -4.105,-2.99 -8.583,-5.232Z" />
|
||||
</svg>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Using Python to Parse File Contents on telegram"
|
||||
href="https://telegram.me/share/url?text=Using%20Python%20to%20Parse%20File%20Contents&url=%2f%2flocalhost%3a1313%2fposts%2fparsing_files_with_python.html">
|
||||
<svg version="1.1" xml:space="preserve" viewBox="2 2 28 28" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M26.49,29.86H5.5a3.37,3.37,0,0,1-2.47-1,3.35,3.35,0,0,1-1-2.47V5.48A3.36,3.36,0,0,1,3,3,3.37,3.37,0,0,1,5.5,2h21A3.38,3.38,0,0,1,29,3a3.36,3.36,0,0,1,1,2.46V26.37a3.35,3.35,0,0,1-1,2.47A3.38,3.38,0,0,1,26.49,29.86Zm-5.38-6.71a.79.79,0,0,0,.85-.66L24.73,9.24a.55.55,0,0,0-.18-.46.62.62,0,0,0-.41-.17q-.08,0-16.53,6.11a.59.59,0,0,0-.41.59.57.57,0,0,0,.43.52l4,1.24,1.61,4.83a.62.62,0,0,0,.63.43.56.56,0,0,0,.4-.17L16.54,20l4.09,3A.9.9,0,0,0,21.11,23.15ZM13.8,20.71l-1.21-4q8.72-5.55,8.78-5.55c.15,0,.23,0,.23.16a.18.18,0,0,1,0,.06s-2.51,2.3-7.52,6.8Z" />
|
||||
</svg>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Using Python to Parse File Contents on ycombinator"
|
||||
href="https://news.ycombinator.com/submitlink?t=Using%20Python%20to%20Parse%20File%20Contents&u=%2f%2flocalhost%3a1313%2fposts%2fparsing_files_with_python.html">
|
||||
<svg version="1.1" xml:space="preserve" width="30px" height="30px" viewBox="0 0 512 512" fill="currentColor"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
|
||||
<path
|
||||
d="M449.446 0C483.971 0 512 28.03 512 62.554L512 449.446C512 483.97 483.97 512 449.446 512L62.554 512C28.03 512 0 483.97 0 449.446L0 62.554C0 28.03 28.029 0 62.554 0L449.446 0ZM183.8767 87.9921H121.8427L230.6673 292.4508V424.0079H281.3328V292.4508L390.1575 87.9921H328.1233L256 238.2489z" />
|
||||
</svg>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</footer>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<span>© 2024 <a href="//localhost:1313/">Norm-working Packets 💾</a></span>
|
||||
<span>
|
||||
Powered by
|
||||
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
|
||||
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
|
||||
</span>
|
||||
</footer>
|
||||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||||
<path d="M12 6H0l6-6z" />
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
<script>
|
||||
let menu = document.getElementById('menu')
|
||||
if (menu) {
|
||||
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||||
menu.onscroll = function () {
|
||||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||||
}
|
||||
}
|
||||
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener("click", function (e) {
|
||||
e.preventDefault();
|
||||
var id = this.getAttribute("href").substr(1);
|
||||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||||
behavior: "smooth"
|
||||
});
|
||||
} else {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||||
}
|
||||
if (id === "top") {
|
||||
history.replaceState(null, null, " ");
|
||||
} else {
|
||||
history.pushState(null, null, `#${id}`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
<script>
|
||||
var mybutton = document.getElementById("top-link");
|
||||
window.onscroll = function () {
|
||||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||||
mybutton.style.visibility = "visible";
|
||||
mybutton.style.opacity = "1";
|
||||
} else {
|
||||
mybutton.style.visibility = "hidden";
|
||||
mybutton.style.opacity = "0";
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<script>
|
||||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||||
if (document.body.className.includes("dark")) {
|
||||
document.body.classList.remove('dark');
|
||||
localStorage.setItem("pref-theme", 'light');
|
||||
} else {
|
||||
document.body.classList.add('dark');
|
||||
localStorage.setItem("pref-theme", 'dark');
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
<script>
|
||||
document.querySelectorAll('pre > code').forEach((codeblock) => {
|
||||
const container = codeblock.parentNode.parentNode;
|
||||
|
||||
const copybutton = document.createElement('button');
|
||||
copybutton.classList.add('copy-code');
|
||||
copybutton.innerHTML = 'copy';
|
||||
|
||||
function copyingDone() {
|
||||
copybutton.innerHTML = 'copied!';
|
||||
setTimeout(() => {
|
||||
copybutton.innerHTML = 'copy';
|
||||
}, 2000);
|
||||
}
|
||||
|
||||
copybutton.addEventListener('click', (cb) => {
|
||||
if ('clipboard' in navigator) {
|
||||
navigator.clipboard.writeText(codeblock.textContent);
|
||||
copyingDone();
|
||||
return;
|
||||
}
|
||||
|
||||
const range = document.createRange();
|
||||
range.selectNodeContents(codeblock);
|
||||
const selection = window.getSelection();
|
||||
selection.removeAllRanges();
|
||||
selection.addRange(range);
|
||||
try {
|
||||
document.execCommand('copy');
|
||||
copyingDone();
|
||||
} catch (e) { };
|
||||
selection.removeRange(range);
|
||||
});
|
||||
|
||||
if (container.classList.contains("highlight")) {
|
||||
container.appendChild(copybutton);
|
||||
} else if (container.parentNode.firstChild == container) {
|
||||
|
||||
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
|
||||
|
||||
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
|
||||
} else {
|
||||
|
||||
codeblock.parentNode.appendChild(copybutton);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user