<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>String | Haobin Tan</title><link>https://haobin-tan.netlify.app/tags/string/</link><atom:link href="https://haobin-tan.netlify.app/tags/string/index.xml" rel="self" type="application/rss+xml"/><description>String</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Sun, 01 May 2022 00:00:00 +0000</lastBuildDate><image><url>https://haobin-tan.netlify.app/media/icon_hu7d15bc7db65c8eaf7a4f66f5447d0b42_15095_512x512_fill_lanczos_center_3.png</url><title>String</title><link>https://haobin-tan.netlify.app/tags/string/</link></image><item><title>String</title><link>https://haobin-tan.netlify.app/docs/coding/python/py-basics/string/</link><pubDate>Sun, 01 May 2022 00:00:00 +0000</pubDate><guid>https://haobin-tan.netlify.app/docs/coding/python/py-basics/string/</guid><description>&lt;figure>&lt;img src="https://files.realpython.com/media/Strings-and-Character-Data-in-Python_Watermarked.296b2b518ae5.jpg"
alt="Source: Real Python" width="80%">&lt;figcaption>
&lt;p>Source: Real Python&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;p>&lt;strong>String = object that contains a sequence of character data.&lt;/strong>&lt;/p>
&lt;p>Python provides a rich set of operators, functions, and methods for working with strings.&lt;/p>
&lt;h2 id="string-operators">String Operators&lt;/h2>
&lt;h3 id="the--operator">The &lt;code>+&lt;/code> Operator&lt;/h3>
&lt;p>The &lt;code>+&lt;/code> operator concatenates strings. It returns a string consisting of the operands joined together&lt;/p>
&lt;details class="spoiler " id="spoiler-1">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">str_1&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;Hello&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">str_2&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;World&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">str_1&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">str_2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">HelloWorld&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h3 id="the--operator-1">The &lt;code>*&lt;/code> Operator&lt;/h3>
&lt;p>The &lt;code>*&lt;/code> operator creates multiple copies of a string. If &lt;code>s&lt;/code> is a string and &lt;code>n&lt;/code> is an integer, either of the following expressions returns a string consisting of &lt;code>n&lt;/code> concatenated copies of &lt;code>s&lt;/code>:&lt;/p>
&lt;ul>
&lt;li>&lt;code>s * n&lt;/code>&lt;/li>
&lt;li>&lt;code>n * s&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>If &lt;code>n&lt;/code> &amp;lt;= 0, then the result is an empty string.&lt;/p>
&lt;details class="spoiler " id="spoiler-2">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">s&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;foo.&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">s&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="mi">4&lt;/span> &lt;span class="c1"># n &amp;gt; 0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;foo.foo.foo.foo.&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="mi">4&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">s&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;foo.foo.foo.foo.&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>n &amp;lt;= 0:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="mi">8&lt;/span> &lt;span class="c1"># n &amp;lt;= 0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h3 id="the-in-operator">The &lt;code>in&lt;/code> Operator&lt;/h3>
&lt;p>As string is essentially a &lt;em>list&lt;/em> of characters, the membership operator &lt;code>in&lt;/code> can also be used with string.&lt;/p>
&lt;details class="spoiler " id="spoiler-3">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">s&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">s&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="s1">&amp;#39;That&lt;/span>&lt;span class="se">\&amp;#39;&lt;/span>&lt;span class="s1">s food for thought.&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">s&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="s1">&amp;#39;That&lt;/span>&lt;span class="se">\&amp;#39;&lt;/span>&lt;span class="s1">s good for now.&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">False&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;z&amp;#39;&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="s1">&amp;#39;abc&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;z&amp;#39;&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="s1">&amp;#39;xyz&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">False&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h2 id="build-in-string-functions">Build-in String Functions&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Function&lt;/th>
&lt;th style="text-align:left">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>chr()&lt;/code>&lt;/td>
&lt;td style="text-align:left">Converts an integer to a character&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>ord()&lt;/code>&lt;/td>
&lt;td style="text-align:left">Converts a character to an integer&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>len()&lt;/code>&lt;/td>
&lt;td style="text-align:left">Returns the length of a string&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>str()&lt;/code>&lt;/td>
&lt;td style="text-align:left">Returns a string representation of an object&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="ordc">&lt;code>ord(c)&lt;/code>&lt;/h3>
&lt;p>Returns an integer value (&lt;a href="https://en.wikipedia.org/wiki/ASCII">ASCII&lt;/a> or &lt;a href="https://realpython.com/courses/python-unicode/">Unicode&lt;/a>) for the given character.&lt;/p>
&lt;details class="spoiler " id="spoiler-4">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="nb">ord&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;a&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mi">97&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="nb">ord&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;#&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mi">35&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="nb">ord&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;€&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mi">8364&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="nb">ord&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;∑&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mi">8721&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h3 id="chrn">&lt;code>chr(n)&lt;/code>&lt;/h3>
&lt;p>&lt;code>chr()&lt;/code> does the reverse of &lt;code>ord()&lt;/code>. Given a numeric value &lt;code>n&lt;/code>, &lt;code>chr(n)&lt;/code> returns a string representing the character that corresponds to &lt;code>n&lt;/code>.&lt;/p>
&lt;details class="spoiler " id="spoiler-5">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="nb">chr&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">97&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;a&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="nb">chr&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">35&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;#&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="nb">chr&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">97&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;a&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="nb">chr&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">35&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;#&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h3 id="lens">&lt;code>len(s)&lt;/code>&lt;/h3>
&lt;p>Returns the length (number of characters) of a string.&lt;/p>
&lt;details class="spoiler " id="spoiler-6">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">s&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;I am a string.&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">s&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mi">14&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h3 id="strobj">&lt;code>str(obj)&lt;/code>&lt;/h3>
&lt;p>Returns a string representation of an object.&lt;/p>
&lt;details class="spoiler " id="spoiler-7">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="nb">str&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mf">49.2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;49.2&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="nb">str&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="mi">4&lt;/span>&lt;span class="n">j&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;(3+4j)&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="nb">str&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">29&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;32&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="nb">str&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h2 id="list-operations-for-string">List Operations for String&lt;/h2>
&lt;p>In Python, strings are ordered sequences of character data. Therefore, list operations (indexing, slicing, negative indexing) also work with string.&lt;/p>
&lt;h2 id="interpolating-variables-into-a-string">Interpolating Variables into a String&lt;/h2>
&lt;p>Since Python 3.6, a new powerful formatting mechanism was introduced.&lt;/p>
&lt;p>This feature is formally named the &lt;strong>Formatted String Literal&lt;/strong>, but is more usually referred to by its nickname &lt;strong>f-string&lt;/strong>.&lt;/p>
&lt;p>More about f-string see: &lt;a href="https://haobin-tan.netlify.app/docs/coding/python/py-basics/format-string/">f-string&lt;/a>&lt;/p>
&lt;h2 id="modify-strings">Modify Strings&lt;/h2>
&lt;p>In a nutshell, you can’t. Strings are one of the data types Python considers &lt;strong>immutable&lt;/strong>, meaning not able to be changed.&lt;/p>
&lt;p>You can usually easily accomplish what you want by generating a copy of the original string that has the desired change in place. Two possibilities:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Assign a new string to the variable&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">s&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;foobar&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">s&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">s&lt;/span>&lt;span class="p">[:&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="s1">&amp;#39;x&amp;#39;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">s&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">4&lt;/span>&lt;span class="p">:]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">s&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;fooxar&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Use built-in string method&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">s&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;foobar&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">s&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">s&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">replace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;b&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;x&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">s&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;fooxar&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul>
&lt;h2 id="built-in-string-methods">Built-in String Methods&lt;/h2>
&lt;p>Python provides a lot of useful built-in methods for string objects.&lt;/p>
&lt;blockquote>
&lt;ul>
&lt;li>&lt;strong>Function&lt;/strong>: a callable procedure that you can invoke to perform specific tasks.&lt;/li>
&lt;li>&lt;strong>Method&lt;/strong>: a specialized type of callable procedure that is tightly associated with an object. Like a function, a method is called to perform a distinct task, but it is invoked on a specific object and has knowledge of its target object during execution.&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;div class="flex px-4 py-3 mb-6 rounded-md bg-primary-100 dark:bg-primary-900">
&lt;span class="pr-3 pt-1 text-primary-600 dark:text-primary-300">
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m11.25 11.25l.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0a9 9 0 0 1 18 0m-9-3.75h.008v.008H12z"/>&lt;/svg>
&lt;/span>
&lt;span class="dark:text-neutral-300">In the following method definitions, arguments specified in square brackets (&lt;code>[]&lt;/code>) are optional.&lt;/span>
&lt;/div>
&lt;h3 id="case-conversion">Case Conversion&lt;/h3>
&lt;p>Methods in this group perform case conversion on the target string.&lt;/p>
&lt;h4 id="scapitalize">&lt;code>s.capitalize()&lt;/code>&lt;/h4>
&lt;p>Returns a copy of &lt;code>s&lt;/code> with the first character converted to uppercase and all other characters converted to lowercase. Non-alphabetic characters are unchanged.&lt;/p>
&lt;details class="spoiler " id="spoiler-10">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">s&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;foo123#BAR#.&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">s&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">capitalize&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;Foo123#bar#.&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h4 id="slower">&lt;code>s.lower()&lt;/code>&lt;/h4>
&lt;p>Returns a copy of &lt;code>s&lt;/code> with all alphabetic characters converted to lowercase.&lt;/p>
&lt;h4 id="sswapcase">&lt;code>s.swapcase()&lt;/code>&lt;/h4>
&lt;p>Returns a copy of &lt;code>s&lt;/code> with uppercase alphabetic characters converted to lowercase and vice versa.&lt;/p>
&lt;details class="spoiler " id="spoiler-11">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;FOO Bar 123 baz qUX&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">swapcase&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;foo bAR 123 BAZ Qux&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h4 id="stitle">&lt;code>s.title()&lt;/code>&lt;/h4>
&lt;p>Returns a copy of &lt;code>s&lt;/code> in which the first letter of each word is converted to uppercase and remaining letters are lowercase.&lt;/p>
&lt;div class="flex px-4 py-3 mb-6 rounded-md bg-yellow-100 dark:bg-yellow-900">
&lt;span class="pr-3 pt-1 text-red-400">
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0zM12 15.75h.007v.008H12z"/>&lt;/svg>
&lt;/span>
&lt;span class="dark:text-neutral-300">This method uses a fairly simple algorithm. It does NOT attempt to distinguish between important and unimportant words, and it does NOT handle apostrophes, possessives, or acronyms gracefully.&lt;/span>
&lt;/div>
&lt;details class="spoiler " id="spoiler-13">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s2">&amp;#34;what&amp;#39;s happened to ted&amp;#39;s IBM stock?&amp;#34;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">title&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;What&amp;#39;S Happened To Ted&amp;#39;S Ibm Stock?&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h4 id="supper">&lt;code>s.upper()&lt;/code>&lt;/h4>
&lt;p>Returns a copy of &lt;code>s&lt;/code> with all alphabetic characters converted to uppercase.&lt;/p>
&lt;h3 id="find-and-replace">Find and Replace&lt;/h3>
&lt;ul>
&lt;li>These methods provide various means of searching the target string for a specified substring.&lt;/li>
&lt;li>Each method in this group supports optional &lt;code>&amp;lt;start&amp;gt;&lt;/code> and &lt;code>&amp;lt;end&amp;gt;&lt;/code> arguments.
&lt;ul>
&lt;li>The action of the method is restricted to the portion of the target string starting at character position &lt;code>&amp;lt;start&amp;gt;&lt;/code> and proceeding up to but &lt;em>NOT&lt;/em> including character position &lt;code>&amp;lt;end&amp;gt;&lt;/code>&lt;/li>
&lt;li>If &lt;code>&amp;lt;start&amp;gt;&lt;/code> is specified but &lt;code>&amp;lt;end&amp;gt;&lt;/code> is not, the method applies to the portion of the target string from &lt;code>&amp;lt;start&amp;gt;&lt;/code> through the end of the string.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h4 id="scountsub-start-end">&lt;code>s.count(&amp;lt;sub&amp;gt;[, &amp;lt;start&amp;gt;[, &amp;lt;end&amp;gt;]])&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>Counts occurrences of a substring in the target string.&lt;/li>
&lt;li>returns the number of non-overlapping occurrences of substring &lt;code>&amp;lt;sub&amp;gt;&lt;/code> in &lt;code>s&lt;/code>:&lt;/li>
&lt;/ul>
&lt;details class="spoiler " id="spoiler-14">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo goo moo&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">count&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;oo&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo goo moo&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">count&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;oo&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">8&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h4 id="sendswithsuffix-start-end">&lt;code>s.endswith(&amp;lt;suffix&amp;gt;[, &amp;lt;start&amp;gt;[, &amp;lt;end&amp;gt;]])&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>Determines whether the target string ends with a given substring&lt;/li>
&lt;li>returns &lt;code>True&lt;/code> if &lt;code>s&lt;/code> ends with the specified &lt;code>&amp;lt;suffix&amp;gt;&lt;/code> and &lt;code>False&lt;/code> otherwise&lt;/li>
&lt;/ul>
&lt;details class="spoiler " id="spoiler-15">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foobar&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">endswith&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;bar&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foobar&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">endswith&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;baz&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">False&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foobar&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">endswith&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;oob&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">4&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foobar&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">endswith&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;oob&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">4&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">False&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h4 id="sfindsub-start-end">&lt;code>s.find(&amp;lt;sub&amp;gt;[, &amp;lt;start&amp;gt;[, &amp;lt;end&amp;gt;]])&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>Searches the target string for a given substring. You can use &lt;code>.find()&lt;/code> to see if a Python string contains a particular substring.&lt;/li>
&lt;li>Returns the &lt;em>lowest&lt;/em> index in &lt;code>s&lt;/code> where substring &lt;code>&amp;lt;sub&amp;gt;&lt;/code> is found&lt;/li>
&lt;li>Returns &lt;code>-1&lt;/code> if the specified substring is not found&lt;/li>
&lt;/ul>
&lt;details class="spoiler " id="spoiler-16">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo bar foo baz foo qux&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">find&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo bar foo baz foo qux&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">find&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;grault&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo bar foo baz foo qux&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">find&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">4&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mi">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo bar foo baz foo qux&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">find&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">4&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">7&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h4 id="sindexsub-start-end">&lt;code>s.index(&amp;lt;sub&amp;gt;[, &amp;lt;start&amp;gt;[, &amp;lt;end&amp;gt;]])&lt;/code>&lt;/h4>
&lt;p>Identical to &lt;code>.find()&lt;/code>, except that it raises an exception if &lt;code>&amp;lt;sub&amp;gt;&lt;/code> is not found rather than returning &lt;code>-1&lt;/code>&lt;/p>
&lt;h4 id="srfindsub-start-end">&lt;code>s.rfind(&amp;lt;sub&amp;gt;[, &amp;lt;start&amp;gt;[, &amp;lt;end&amp;gt;]])&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>
&lt;p>Searches the target string for a given substring starting at the end.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Returns the &lt;em>highest&lt;/em> index in &lt;code>s&lt;/code> where substring &lt;code>&amp;lt;sub&amp;gt;&lt;/code> is found&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Returns &lt;code>-1&lt;/code> if the substring is not found&lt;/p>
&lt;/li>
&lt;/ul>
&lt;details class="spoiler " id="spoiler-17">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo bar foo baz foo qux&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">rfind&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mi">16&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo bar foo baz foo qux&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">rfind&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;grault&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo bar foo baz foo qux&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">rfind&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">14&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mi">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo bar foo baz foo qux&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">rfind&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">10&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">14&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h4 id="srindexsub-start-end">&lt;code>s.rindex(&amp;lt;sub&amp;gt;[, &amp;lt;start&amp;gt;[, &amp;lt;end&amp;gt;]])&lt;/code>&lt;/h4>
&lt;p>Identical to &lt;code>.rfind()&lt;/code>, except that it raises an exception if &lt;code>&amp;lt;sub&amp;gt;&lt;/code> is not found rather than returning &lt;code>-1&lt;/code>&lt;/p>
&lt;h4 id="sstartswithprefix-start-end">&lt;code>s.startswith(&amp;lt;prefix&amp;gt;[, &amp;lt;start&amp;gt;[, &amp;lt;end&amp;gt;]])&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>Determines whether the target string starts with a given substring.&lt;/li>
&lt;li>Returns &lt;code>True&lt;/code> if &lt;code>s&lt;/code> starts with the specified &lt;code>&amp;lt;prefix&amp;gt;&lt;/code> and &lt;code>False&lt;/code> otherwise&lt;/li>
&lt;/ul>
&lt;details class="spoiler " id="spoiler-18">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foobar&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">startswith&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foobar&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">startswith&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;bar&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">False&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foobar&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">startswith&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;bar&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foobar&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">startswith&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;bar&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">False&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h3 id="character-classification">Character Classification&lt;/h3>
&lt;p>Classify a string based on the characters it contains.&lt;/p>
&lt;h4 id="sisalnum">&lt;code>s.isalnum()&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>Determines whether the target string consists of alphanumeric characters&lt;/li>
&lt;li>Returns &lt;code>True&lt;/code> if &lt;code>s&lt;/code> is nonempty and all its characters are alphanumeric (either a letter or a number), and &lt;code>False&lt;/code> otherwise&lt;/li>
&lt;/ul>
&lt;details class="spoiler " id="spoiler-19">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;abc123&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isalnum&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;abc$123&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isalnum&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isalnum&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">False&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h4 id="sisalpha">&lt;code>s.isalpha()&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>Determines whether the target string consists of alphabetic characters.&lt;/li>
&lt;li>&lt;code>s.isalpha()&lt;/code> returns &lt;code>True&lt;/code> if &lt;code>s&lt;/code> is nonempty and all its characters are alphabetic, and &lt;code>False&lt;/code> otherwise&lt;/li>
&lt;/ul>
&lt;details class="spoiler " id="spoiler-20">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;ABCabc&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isalpha&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;abc123&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isalpha&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">False&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h4 id="sisdigit">&lt;code>s.isdigit()&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>
&lt;p>Determines whether the target string consists of digit characters. You can use the &lt;code>.isdigit()&lt;/code> Python method to check if your string is made of only digits.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Returns &lt;code>True&lt;/code> if &lt;code>s&lt;/code> is nonempty and all its characters are numeric digits, and &lt;code>False&lt;/code> otherwise&lt;/p>
&lt;/li>
&lt;/ul>
&lt;details class="spoiler " id="spoiler-21">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;123&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isdigit&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;123abc&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isdigit&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">False&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h4 id="sisidentifier">&lt;code>s.isidentifier()&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>Determines whether the target string is a valid Python identifier.&lt;/li>
&lt;li>Returns &lt;code>True&lt;/code> if &lt;code>s&lt;/code> is a valid Python identifier according to the language definition, and &lt;code>False&lt;/code> otherwise&lt;/li>
&lt;/ul>
&lt;details class="spoiler " id="spoiler-22">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo32&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isidentifier&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;32foo&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isidentifier&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo$32&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isidentifier&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">False&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;div class="flex px-4 py-3 mb-6 rounded-md bg-yellow-100 dark:bg-yellow-900">
&lt;span class="pr-3 pt-1 text-red-400">
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0zM12 15.75h.007v.008H12z"/>&lt;/svg>
&lt;/span>
&lt;span class="dark:text-neutral-300">&lt;p>&lt;code>.isidentifier()&lt;/code> will return &lt;code>True&lt;/code> for a string that matches a &lt;a href="https://realpython.com/python-keywords/">Python keyword&lt;/a> even though that would not actually be a valid identifier, e.g.,&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;and&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isidentifier&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="c1"># and is a keyword in python&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>To test whether a string matches a Python keyword, use &lt;code>keyword.iskeyword():&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="kn">from&lt;/span> &lt;span class="nn">keyword&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">iskeyword&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">iskeyword&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;and&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If you really want to ensure that a string would serve as a valid Python identifier, you should check that &lt;code>.isidentifier()&lt;/code> is &lt;code>True&lt;/code> and that &lt;code>iskeyword()&lt;/code> is &lt;code>False&lt;/code>&lt;/p>
&lt;/span>
&lt;/div>
&lt;h4 id="sislower">&lt;code>s.islower()&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>Determines whether the target string’s alphabetic characters are lowercase.&lt;/li>
&lt;li>returns &lt;code>True&lt;/code> if &lt;code>s&lt;/code> is nonempty and all the alphabetic characters it contains are lowercase, and &lt;code>False&lt;/code> otherwise. Non-alphabetic characters are ignore.&lt;/li>
&lt;/ul>
&lt;details class="spoiler " id="spoiler-24">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;abc&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">islower&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;abc1$d&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">islower&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;Abc1$D&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">islower&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">False&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h4 id="sisprintable">&lt;code>s.isprintable()&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>Returns &lt;code>True&lt;/code> if &lt;code>s&lt;/code> is empty or all the alphabetic characters it contains are printable.&lt;/li>
&lt;li>Returns &lt;code>False&lt;/code> if &lt;code>s&lt;/code> contains at least one non-printable character.&lt;/li>
&lt;li>Non-alphabetic characters are ignored&lt;/li>
&lt;/ul>
&lt;details class="spoiler " id="spoiler-25">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;a&lt;/span>&lt;span class="se">\t&lt;/span>&lt;span class="s1">b&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isprintable&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;a b&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isprintable&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isprintable&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;a&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s1">b&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isprintable&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">False&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;div class="flex px-4 py-3 mb-6 rounded-md bg-primary-100 dark:bg-primary-900">
&lt;span class="pr-3 pt-1 text-primary-600 dark:text-primary-300">
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m11.25 11.25l.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0a9 9 0 0 1 18 0m-9-3.75h.008v.008H12z"/>&lt;/svg>
&lt;/span>
&lt;span class="dark:text-neutral-300">This is the only &lt;code>.isxxxx()&lt;/code> method that returns &lt;code>True&lt;/code> if &lt;code>s&lt;/code> is an empty string. All the others return &lt;code>False&lt;/code> for an empty string.&lt;/span>
&lt;/div>
&lt;h4 id="sisspace">&lt;code>s.isspace()&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>Determines whether the target string consists of whitespace characters.&lt;/li>
&lt;li>Returns &lt;code>True&lt;/code> if &lt;code>s&lt;/code> is nonempty and all characters are whitespace characters, and &lt;code>False&lt;/code> otherwise.&lt;/li>
&lt;li>The most commonly encountered whitespace characters are
&lt;ul>
&lt;li>space &lt;code>' '&lt;/code>&lt;/li>
&lt;li>tab &lt;code>'\t'&lt;/code>&lt;/li>
&lt;li>newline &lt;code>'\n'&lt;/code>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;details class="spoiler " id="spoiler-27">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39; &lt;/span>&lt;span class="se">\t&lt;/span>&lt;span class="s1"> &lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s1"> &amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isspace&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39; a &amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isspace&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">False&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h4 id="sistitle">&lt;code>s.istitle()&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>Determines whether the target string is title cased.&lt;/li>
&lt;li>Returns
&lt;ul>
&lt;li>&lt;code>True&lt;/code> if &lt;code>s&lt;/code> is nonempty, the first alphabetic character of each word is uppercase, and all other alphabetic characters in each word are lowercase. (more intuitive: “Uppercase characters may only follow uncased characters and lowercase characters only cased ones.”)&lt;/li>
&lt;li>&lt;code>False&lt;/code>, otherwise&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;details class="spoiler " id="spoiler-28">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;This Is A Title&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">istitle&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;This is a title&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">istitle&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;Give Me The #$#@ Ball!&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">istitle&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h4 id="sisupper">&lt;code>s.isupper()&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>Determines whether the target string’s alphabetic characters are uppercase.&lt;/li>
&lt;li>Returns &lt;code>True&lt;/code> if &lt;code>s&lt;/code> is nonempty and all the alphabetic characters it contains are uppercase, and &lt;code>False&lt;/code> otherwise.&lt;/li>
&lt;li>Non-alphabetic characters are ignored&lt;/li>
&lt;/ul>
&lt;details class="spoiler " id="spoiler-29">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;ABC&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isupper&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;ABC1$D&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isupper&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;Abc1$D&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isupper&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kc">False&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h3 id="string-formatting">String Formatting&lt;/h3>
&lt;p>Modify or enhance the format of a string&lt;/p>
&lt;h4 id="scenterwidth-fill">&lt;code>s.center(&amp;lt;width&amp;gt;[, &amp;lt;fill&amp;gt;])&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>
&lt;p>Centers a string in a field.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Returns a string consisting of &lt;code>s&lt;/code> centered in a field of width &lt;code>&amp;lt;width&amp;gt;&lt;/code>. By default, padding consists of the ASCII space character&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">center&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">10&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39; foo &amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>If the optional &lt;code>&amp;lt;fill&amp;gt;&lt;/code> argument is specified, it is used as the padding character&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;bar&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">center&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">10&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;-&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;---bar----&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>If &lt;code>s&lt;/code> is already at least as long as &lt;code>&amp;lt;width&amp;gt;&lt;/code>, it is returned unchanged&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">center&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul>
&lt;h4 id="sexpandtabstabsize8">&lt;code>s.expandtabs(tabsize=8)&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>Replaces each tab character (&lt;code>'\t'&lt;/code>) with spaces.&lt;/li>
&lt;li>&lt;code>tabsize&lt;/code> is an optional keyword parameter specifying alternate tab stop columns. By default, spaces are filled in assuming a tab stop at every eighth column&lt;/li>
&lt;/ul>
&lt;details class="spoiler " id="spoiler-30">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;a&lt;/span>&lt;span class="se">\t&lt;/span>&lt;span class="s1">b&lt;/span>&lt;span class="se">\t&lt;/span>&lt;span class="s1">c&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">expandtabs&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;a b c&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;aaa&lt;/span>&lt;span class="se">\t&lt;/span>&lt;span class="s1">bbb&lt;/span>&lt;span class="se">\t&lt;/span>&lt;span class="s1">c&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">expandtabs&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;aaa bbb c&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;a&lt;/span>&lt;span class="se">\t&lt;/span>&lt;span class="s1">b&lt;/span>&lt;span class="se">\t&lt;/span>&lt;span class="s1">c&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">expandtabs&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">4&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;a b c&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;aaa&lt;/span>&lt;span class="se">\t&lt;/span>&lt;span class="s1">bbb&lt;/span>&lt;span class="se">\t&lt;/span>&lt;span class="s1">c&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">expandtabs&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">tabsize&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">4&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;aaa bbb c&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h4 id="sljustwidth-fill">&lt;code>s.ljust(&amp;lt;width&amp;gt;[, &amp;lt;fill&amp;gt;])&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>
&lt;p>Left-justifies a string in field.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Returns a string consisting of &lt;code>s&lt;/code> left-justified in a field of width &lt;code>&amp;lt;width&amp;gt;&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ljust&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">10&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;foo &amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>If the optional &lt;code>&amp;lt;fill&amp;gt;&lt;/code> argument is specified, it is used as the padding character&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ljust&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">10&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;-&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;foo-------&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>If &lt;code>s&lt;/code> is already at least as long as &lt;code>&amp;lt;width&amp;gt;&lt;/code>, it is returned unchanged&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ljust&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul>
&lt;h5 id="slstripchars">&lt;code>s.lstrip([&amp;lt;chars&amp;gt;])&lt;/code>&lt;/h5>
&lt;ul>
&lt;li>
&lt;p>Trims leading characters from a string.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>returns a copy of &lt;code>s&lt;/code> with any whitespace characters removed from the left end&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39; foo bar baz &amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">lstrip&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;foo bar baz &amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="se">\t\n&lt;/span>&lt;span class="s1">foo&lt;/span>&lt;span class="se">\t\n&lt;/span>&lt;span class="s1">bar&lt;/span>&lt;span class="se">\t\n&lt;/span>&lt;span class="s1">baz&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">lstrip&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;foo&lt;/span>&lt;span class="se">\t\n&lt;/span>&lt;span class="s1">bar&lt;/span>&lt;span class="se">\t\n&lt;/span>&lt;span class="s1">baz&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>If the optional &lt;code>&amp;lt;chars&amp;gt;&lt;/code> argument is specified, it is a string that specifies the set of characters to be removed&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;http://www.realpython.com&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">lstrip&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;/:pth&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;www.realpython.com&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul>
&lt;h4 id="sreplaceold-new-count">&lt;code>s.replace(&amp;lt;old&amp;gt;, &amp;lt;new&amp;gt;[, &amp;lt;count&amp;gt;])&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>
&lt;p>Replaces occurrences of a substring within a string.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Returns a copy of &lt;code>s&lt;/code> with all occurrences of substring &lt;code>&amp;lt;old&amp;gt;&lt;/code> replaced by &lt;code>&amp;lt;new&amp;gt;&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo bar foo baz foo qux&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">replace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;grault&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;grault bar grault baz grault qux&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>If the optional &lt;code>&amp;lt;count&amp;gt;&lt;/code> argument is specified, a maximum of &lt;code>&amp;lt;count&amp;gt;&lt;/code> replacements are performed, starting at the left end of &lt;code>s&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo bar foo baz foo qux&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">replace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;grault&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;grault bar grault baz foo qux&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul>
&lt;h4 id="srjustwidth-fill">&lt;code>s.rjust(&amp;lt;width&amp;gt;[, &amp;lt;fill&amp;gt;])&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>Right-justifies a string in a field.&lt;/li>
&lt;li>Works similarly to &lt;a href="#sljustwidth-fill">&lt;code>s.ljust()&lt;/code>&lt;/a>&lt;/li>
&lt;/ul>
&lt;h4 id="srstripchars">&lt;code>s.rstrip([&amp;lt;chars&amp;gt;])&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>Trims trailing characters from a string.&lt;/li>
&lt;li>Works similarly to &lt;a href="#slstripchars">&lt;code>s.lstrip()&lt;/code>&lt;/a>&lt;/li>
&lt;/ul>
&lt;h4 id="sstripchars">&lt;code>s.strip([&amp;lt;chars&amp;gt;])&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>
&lt;p>Strips characters from the left and right ends of a string.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Equivalent to &lt;code>s.lstrip().rstrip()&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>As with &lt;code>.lstrip()&lt;/code> and &lt;code>.rstrip()&lt;/code>, the optional &lt;code>&amp;lt;chars&amp;gt;&lt;/code> argument specifies the set of characters to be removed&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h4 id="szfillwidth">&lt;code>s.zfill(&amp;lt;width&amp;gt;)&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>
&lt;p>Pads a string on the left with zeros.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Returns a copy of &lt;code>s&lt;/code> left-padded with &lt;code>'0'&lt;/code> characters to the specified &lt;code>&amp;lt;width&amp;gt;&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;42&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">zfill&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">5&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;00042&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>If &lt;code>s&lt;/code> contains a leading sign, it remains at the left edge of the result string after zeros are inserted&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;+42&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">zfill&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">8&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;+0000042&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;-42&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">zfill&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">8&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;-0000042&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>If &lt;code>s&lt;/code> is already at least as long as &lt;code>&amp;lt;width&amp;gt;&lt;/code>, it is returned unchanged&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="converting-between-strings-and-lists">Converting Between Strings and Lists&lt;/h3>
&lt;p>Convert between a string and some composite data type by either pasting objects together to make a string, or by breaking a string up into pieces.&lt;/p>
&lt;h4 id="sjoiniterable">&lt;code>s.join(&amp;lt;iterable&amp;gt;)&lt;/code>&lt;/h4>
&lt;p>Concatenates strings from an iterable.&lt;/p>
&lt;details class="spoiler " id="spoiler-31">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;, &amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">([&lt;/span>&lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;bar&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;baz&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;qux&amp;#39;&lt;/span>&lt;span class="p">])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;foo, bar, baz, qux&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>In the following example, &lt;code>&amp;lt;iterable&amp;gt;&lt;/code> is specified as a single string value. When a string value is used as an iterable, it is interpreted as a list of the string’s individual characters.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="nb">list&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;corge&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;c&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;o&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;r&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;g&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;e&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;:&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;corge&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;c:o:r:g:e&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h4 id="spartitionsep">&lt;code>s.partition(&amp;lt;sep&amp;gt;)&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>Splits &lt;code>s&lt;/code> at the first occurrence of string &lt;code>&amp;lt;sep&amp;gt;&lt;/code>.&lt;/li>
&lt;li>The return value is a three-part tuple consisting of:
&lt;ul>
&lt;li>The portion of &lt;code>s&lt;/code> preceding &lt;code>&amp;lt;sep&amp;gt;&lt;/code>&lt;/li>
&lt;li>&lt;code>&amp;lt;sep&amp;gt;&lt;/code> itself&lt;/li>
&lt;li>The portion of &lt;code>s&lt;/code> following &lt;code>&amp;lt;sep&amp;gt;&lt;/code>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;details class="spoiler " id="spoiler-32">
&lt;summary class="cursor-pointer">Example&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo.bar&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">partition&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;.&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;.&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;bar&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo@@bar@@baz&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">partition&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;@@&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;@@&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;bar@@baz&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If &lt;code>&amp;lt;sep&amp;gt;&lt;/code> is not found in &lt;code>s&lt;/code>, the returned tuple contains &lt;code>s&lt;/code> followed by two empty strings:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo.bar&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">partition&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;@@&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;foo.bar&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/details>
&lt;h4 id="srpartitionsep">s.rpartition(&lt;sep>)&lt;/h4>
&lt;p>Works exactly like &lt;code>s.partition(&amp;lt;sep&amp;gt;)&lt;/code>, except that &lt;code>s&lt;/code> is split at the &lt;em>last&lt;/em> occurrence of &lt;code>&amp;lt;sep&amp;gt;&lt;/code> instead of the first occurrence&lt;/p>
&lt;h4 id="srsplitsepnone-maxsplit-1">&lt;code>s.rsplit(sep=None, maxsplit=-1)&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>
&lt;p>Splits a string into a list, starting from the right&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Without arguments, &lt;code>s.rsplit()&lt;/code> splits &lt;code>s&lt;/code> into substrings delimited by any sequence of whitespace and returns the substrings as a list&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo bar baz qux&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">rsplit&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;bar&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;baz&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;qux&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo&lt;/span>&lt;span class="se">\n\t&lt;/span>&lt;span class="s1">bar baz&lt;/span>&lt;span class="se">\r\f&lt;/span>&lt;span class="s1">qux&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">rsplit&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;bar&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;baz&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;qux&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>If &lt;code>&amp;lt;sep&amp;gt;&lt;/code> is specified, it is used as the delimiter for splitting&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo.bar.baz.qux&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">rsplit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">sep&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;.&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;bar&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;baz&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;qux&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>
&lt;p>When &lt;code>&amp;lt;sep&amp;gt;&lt;/code> is explicitly given as a delimiter, consecutive delimiters in &lt;code>s&lt;/code> are assumed to delimit empty strings, which will be returned&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;foo...bar&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">rsplit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">sep&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;.&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;bar&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>If the optional keyword parameter &lt;code>&amp;lt;maxsplit&amp;gt;&lt;/code> is specified, a maximum of that many splits are performed, starting from the right end of &lt;code>s&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;www.realpython.com&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">rsplit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">sep&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;.&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">maxsplit&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;www.realpython&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;com&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul>
&lt;h4 id="ssplitsepnone-maxsplit-1">&lt;code>s.split(sep=None, maxsplit=-1)&lt;/code>&lt;/h4>
&lt;p>Behaves exactly like &lt;code>s.rsplit()&lt;/code>, except that if &lt;code>&amp;lt;maxsplit&amp;gt;&lt;/code> is specified, splits are counted from the &lt;em>left&lt;/em> end of &lt;code>s&lt;/code> rather than the right end&lt;/p>
&lt;h4 id="ssplitlineskeepends">&lt;code>s.splitlines([&amp;lt;keepends&amp;gt;])&lt;/code>&lt;/h4>
&lt;ul>
&lt;li>
&lt;p>Splits &lt;code>s&lt;/code> at line boundaries up into lines and returns them in a list.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Any of the following characters or character sequences is considered to constitute a line boundary:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:center">Escape Sequence&lt;/th>
&lt;th style="text-align:center">Character&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:center">&lt;code>\n&lt;/code>&lt;/td>
&lt;td style="text-align:center">Newline&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:center">&lt;code>\r&lt;/code>&lt;/td>
&lt;td style="text-align:center">Carriage Return&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:center">&lt;code>\r\n&lt;/code>&lt;/td>
&lt;td style="text-align:center">Carriage Return + Line Feed&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:center">&lt;code>\v&lt;/code> or &lt;code>\x0b&lt;/code>&lt;/td>
&lt;td style="text-align:center">Line Tabulation&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:center">&lt;code>\f&lt;/code> or &lt;code>\x0c&lt;/code>&lt;/td>
&lt;td style="text-align:center">Form Feed&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:center">&lt;code>\x1c&lt;/code>&lt;/td>
&lt;td style="text-align:center">File Separator&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:center">&lt;code>\x1d&lt;/code>&lt;/td>
&lt;td style="text-align:center">Group Separator&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:center">&lt;code>\x1e&lt;/code>&lt;/td>
&lt;td style="text-align:center">Record Separator&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:center">&lt;code>\x85&lt;/code>&lt;/td>
&lt;td style="text-align:center">Next Line (C1 Control Code)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:center">&lt;code>\u2028&lt;/code>&lt;/td>
&lt;td style="text-align:center">Unicode Line Separator&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:center">&lt;code>\u2029&lt;/code>&lt;/td>
&lt;td style="text-align:center">Unicode Paragraph Separator&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/li>
&lt;/ul>
&lt;h2 id="advanced">Advanced&lt;/h2>
&lt;h3 id="substring-count-with-overlapping-occurrences">Substring count with overlapping occurrences&lt;/h3>
&lt;p>Let&amp;rsquo;s say we want to count the occurrence of substring &lt;code>11&lt;/code> in the string &lt;code>1011101111&lt;/code>.&lt;/p>
&lt;p>Note that in Python, the &lt;code>count()&lt;/code> method returns the number of substrings in a given string, but it does not give correct results when two occurrences of the substring overlap. However, we still have different solution for this problem.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">string&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;1011101111&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">sub_string&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;11&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="use-built-in-re-module">Use built-in &lt;code>re&lt;/code> module&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">re&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Use &lt;code>[re.findall()](https://docs.python.org/3/library/re.html#re.findall)&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">re&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">findall&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;(?=&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">sub_string&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">)&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">string&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Use &lt;a href="https://docs.python.org/3/library/re.html#re.subn">&lt;code>re.subn&lt;/code>&lt;/a> :&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">re&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">subn&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;(?=&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">sub_string&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">)&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">string&lt;/span>&lt;span class="p">)[&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="use-built-in-string-methods">Use built-in string methods&lt;/h4>
&lt;p>Use &lt;code>startswith()&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">count_substring&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">string&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">sub_string&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">count&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">pos&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">string&lt;/span>&lt;span class="p">)):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">string&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">pos&lt;/span>&lt;span class="p">:]&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">startswith&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">sub_string&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">count&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">count&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">count_substring&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">string&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">sub_string&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Or in a more pythonic way, use list comprehension:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">sum&lt;/span>&lt;span class="p">([&lt;/span>&lt;span class="n">string&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">startswith&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">sub_string&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">string&lt;/span>&lt;span class="p">))])&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="reference">Reference&lt;/h4>
&lt;ul>
&lt;li>&lt;a href="https://stackoverflow.com/questions/2970520/string-count-with-overlapping-occurrences">String count with overlapping occurrences&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="reference-1">Reference&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://realpython.com/python-strings/#built-in-string-methods">Strings and Character Data in Python&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>f-string</title><link>https://haobin-tan.netlify.app/docs/coding/python/py-basics/format-string/</link><pubDate>Wed, 21 Oct 2020 00:00:00 +0000</pubDate><guid>https://haobin-tan.netlify.app/docs/coding/python/py-basics/format-string/</guid><description>&lt;p>Python f-string is the newest Python syntax to do string formatting. Python f-strings provide a faster, more readable, more concise, and less error prone way of formatting strings in Python. &amp;#x1f44f;&lt;/p>
&lt;p>The f-strings have the &lt;code>f&lt;/code> prefix and use &lt;code>{}&lt;/code> brackets to evaluate values.&lt;/p>
&lt;h2 id="python-string-formatting">Python string formatting&lt;/h2>
&lt;p>The following example summarizes string formatting options in Python:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">name&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;Peter&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">age&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">23&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="si">%s&lt;/span>&lt;span class="s1"> is &lt;/span>&lt;span class="si">%d&lt;/span>&lt;span class="s1"> years old&amp;#39;&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">name&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">age&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="c1"># C style&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="si">{}&lt;/span>&lt;span class="s1"> is &lt;/span>&lt;span class="si">{}&lt;/span>&lt;span class="s1"> years old&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">format&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">name&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">age&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="c1"># python format function&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">name&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1"> is &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">age&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1"> years old&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># f-string&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-txt" data-lang="txt">&lt;span class="line">&lt;span class="cl">Peter is 23 years old
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Peter is 23 years old
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Peter is 23 years old
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="f-string-usage">f-string usage&lt;/h2>
&lt;h3 id="f-string-expressions">f-string expressions&lt;/h3>
&lt;p>We can put expressions between the &lt;code>{}&lt;/code> brackets, and the expression will be evaluated inside f-string&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">bags&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">apples_in_bag&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">12&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;There are total of &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">bags&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">apples_in_bag&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1"> apples&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-txt" data-lang="txt">&lt;span class="line">&lt;span class="cl">There are total of 36 apples
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="f-string-dictionaries">f-string dictionaries&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">user&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s1">&amp;#39;name&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;John Doe&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;occupation&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;gardener&amp;#39;&lt;/span>&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">user&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;name&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> is a &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">user&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;occupation&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-txt" data-lang="txt">&lt;span class="line">&lt;span class="cl">John Doe is a gardener
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="f-string-debug">f-string debug&lt;/h3>
&lt;p>Python 3.8 introduced the self-documenting expression with the &lt;code>=&lt;/code> character.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">math&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">x&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mf">0.8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">math&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">cos&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="si">= }&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">math&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sin&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="si">= }&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-txt" data-lang="txt">&lt;span class="line">&lt;span class="cl">math.cos(x) = 0.6967067093471654
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">math.sin(x) = 0.7173560908995228
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="multiline-f-string">multiline f-string&lt;/h3>
&lt;ul>
&lt;li>The f-strings are placed between round brackets&lt;/li>
&lt;li>Each of the strings is preceded with the &lt;code>f&lt;/code> character&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">name&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;John Doe&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">age&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">32&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">occupation&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;gardener&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">msg&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;Name: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">name&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;Age: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">age&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;Occupation: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">occupation&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">msg&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-txt" data-lang="txt">&lt;span class="line">&lt;span class="cl">Name: John Doe
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Age: 32
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Occupation: gardener
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="f-string-calling-function">f-string calling function&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">mymax&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">y&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">x&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="n">x&lt;/span> &lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">y&lt;/span> &lt;span class="k">else&lt;/span> &lt;span class="n">y&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">a&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">b&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;Max of &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1"> and &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">b&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1"> is &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">mymax&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">b&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-txt" data-lang="txt">&lt;span class="line">&lt;span class="cl">Max of 3 and 4 is 4
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="f-string-objects">f-string objects&lt;/h3>
&lt;p>Python f-string accepts objects as well; the objects must have either &lt;code>__str__()&lt;/code> or &lt;code>__repr__()&lt;/code> magic functions defined.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">User&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">def&lt;/span> &lt;span class="fm">__init__&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">name&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">occupation&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">name&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">name&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">occupation&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">occupation&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">def&lt;/span> &lt;span class="fm">__repr__&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">name&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> is a &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">occupation&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">u&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">User&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;John Doe&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;gardener&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">u&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-txt" data-lang="txt">&lt;span class="line">&lt;span class="cl">John Doe is a gardener
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="f-string-format">f-string format&lt;/h2>
&lt;h3 id="floats">floats&lt;/h3>
&lt;p>Floating point values have the &lt;code>f&lt;/code> suffix. We can also specify the &lt;strong>precision&lt;/strong>: the number of decimal places. The precision is a value that goes right after the dot character.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">val&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mf">12.3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">val&lt;/span>&lt;span class="si">:&lt;/span>&lt;span class="s1">.2f&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">val&lt;/span>&lt;span class="si">:&lt;/span>&lt;span class="s1">.5f&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-txt" data-lang="txt">&lt;span class="line">&lt;span class="cl">12.30
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">12.30000
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="width">width&lt;/h3>
&lt;p>The width specifier sets the width of the value. The value may be filled with spaces or other characters if the value is shorter than the specified width.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="n">x&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">11&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="si">:&lt;/span>&lt;span class="s1">02&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1"> &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="si">:&lt;/span>&lt;span class="s1">3&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1"> &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="si">:&lt;/span>&lt;span class="s1">4&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-txt" data-lang="txt">&lt;span class="line">&lt;span class="cl">01 1 1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">02 4 8
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">03 9 27
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">04 16 64
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">05 25 125
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">06 36 216
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">07 49 343
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">08 64 512
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">09 81 729
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">10 100 1000
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>We can combine floats precision and width, for example:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">np&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">a&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">random&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">rand&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">20&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="n">index&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">value&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">enumerate&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">index&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="mi">10&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">index&lt;/span>&lt;span class="si">:&lt;/span>&lt;span class="s1">2&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1">: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">value&lt;/span>&lt;span class="si">:&lt;/span>&lt;span class="s1">4.4f&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">index&lt;/span>&lt;span class="si">:&lt;/span>&lt;span class="s1">2&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1">: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">value&lt;/span>&lt;span class="si">:&lt;/span>&lt;span class="s1">4.3f&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-txt" data-lang="txt">&lt;span class="line">&lt;span class="cl"> 0: 0.1398
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 1: 0.7079
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 2: 0.2034
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 3: 0.5995
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 4: 0.7553
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 5: 0.6342
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 6: 0.4282
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 7: 0.4405
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 8: 0.1145
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 9: 0.3309
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">10: 0.127
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">11: 0.156
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">12: 0.309
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">13: 0.845
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">14: 0.816
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">15: 0.694
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">16: 0.291
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">17: 0.440
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">18: 0.469
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">19: 0.305
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>{value:4.4f}&lt;/code> means&lt;/p>
&lt;ul>
&lt;li>We will use a width of 4-character to print &lt;code>value&lt;/code>&lt;/li>
&lt;li>The precision of &lt;code>value&lt;/code> is 4: we will keep 4 decimal places&lt;/li>
&lt;/ul>
&lt;h3 id="r-s-and-a">&lt;code>!r&lt;/code>, &lt;code>!s&lt;/code>, and &lt;code>!a&lt;/code>&lt;/h3>
&lt;p>The conversions &lt;code>!r&lt;/code>, &lt;code>!s&lt;/code>, and &lt;code>!a&lt;/code> are equivalent to calling &lt;code>repr()&lt;/code>, &lt;code>str()&lt;/code>, and &lt;code>ascii()&lt;/code>, respectively.&lt;/p>
&lt;p>Example:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">&amp;gt;&amp;gt; a = &amp;#39;some string&amp;#39;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;gt;&amp;gt;&amp;gt; f&amp;#39;{a!r}&amp;#39;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;#34;&amp;#39;some string&amp;#39;&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>is identical to&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="nb">repr&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;&amp;#39;some string&amp;#39;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The usage of these conversion are not strictly required, because explicitly calling the corresponding functions is arguably more clear in its intent. In other words, they are redundant.&lt;/p>
&lt;p>&lt;code>!r&lt;/code> (&lt;code>repr&lt;/code>), &lt;code>!s&lt;/code> (&lt;code>str&lt;/code>) and &lt;code>!a&lt;/code> (&lt;code>ascii&lt;/code>) are kept around just to ease compatibility with the &lt;code>str.format()&lt;/code> alternative, because it does not allow the execution of arbitrary expressions. You don&amp;rsquo;t need to use them with f-strings.&lt;/p>
&lt;p>Reference:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://stackoverflow.com/questions/44800801/in-python-format-f-string-strings-what-does-r-mean">In Python format (f-string) strings, what does !r mean?&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://peps.python.org/pep-0498/#s-r-and-a-are-redundant">&lt;code>!s&lt;/code>, &lt;code>!r&lt;/code>, and &lt;code>!a&lt;/code> are redundant&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="reference">Reference&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="http://zetcode.com/python/fstring/">Python f-string tutorial&lt;/a>&lt;/li>
&lt;/ul></description></item></channel></rss>