{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Using Strings in Python 3\n", "[Python String docs](https://docs.python.org/3/library/string.html)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Creating Strings\n", "Enclose a string in single or double quotes, or in triple single quotes. \n", "And you can embed single quotes within double quotes, or double quotes within single quotes. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Tony Stark is Ironman.\n", "Her book is called \"The Magician\".\n", "Captain Rogers kicks butt.\n" ] } ], "source": [ "s = 'Tony Stark is'\n", "t = \"Ironman.\"\n", "print(s, t)\n", "u = 'Her book is called \"The Magician\".'\n", "print(u)\n", "v = '''Captain Rogers kicks butt.'''\n", "print(v)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Type, Len, Split, Join\n", "Get the number of characters in a string using len. \n", "To get the number of words you have to split the string into a list. Split uses a space as its default, or you can split on any substring you like. \n", "To reverse a split, use join(str)." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "13\n" ] } ], "source": [ "print(type(s))\n", "print(len(s))" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['Tony', 'Stark', 'is']\n", "3\n", "['Her book is c', 'lled \"The M', 'gici', 'n\".']\n", "['you', 'are', 'so', 'pretty']\n", "Just do it.\n" ] } ], "source": [ "print(s.split())\n", "print(len(s.split()))\n", "print(u.split('a'))\n", "print('you,are,so,pretty'.split(','))\n", "print(' '.join(['Just', 'do', 'it.']))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Check if a substring is contained in a string\n", "Use *in* or *not in*. \n", "Startswith and Endswith are also useful boolean checks." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "False\n", "False\n", "True\n", "True\n", "True\n" ] } ], "source": [ "print('dog' in s)\n", "print('k' in t)\n", "print('k' not in t)\n", "print(s.startswith('Tony'))\n", "print(s.endswith('is'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Replace all substrings\n", "Second example iterates through a dictionary and replaces all instances of text numbers with numerals." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Captain America kicks butt.\n" ] } ], "source": [ "v = v.replace('Rogers', 'America')\n", "print(v)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Anton has 3 cars. Javier has 4.\n" ] } ], "source": [ "z = 'Anton has three cars. Javier has four.'\n", "numbers = {'one':'1', 'two':'2', 'three':'3', 'four':'4', 'five':'5'}\n", "for k,v in numbers.items():\n", " z = z.replace(k,v)\n", "print(z)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Change case" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "tony stark is\n", "IRONMAN.\n", "Her Book Is Called \"The Magician\".\n", "Hulk rules!\n" ] } ], "source": [ "print(s.lower())\n", "print(t.upper())\n", "print(u.title())\n", "print('hulk rules!'.capitalize())" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n", "False\n", "True\n", "True\n" ] } ], "source": [ "print('david'.islower())\n", "print('hulk'.isupper())\n", "print('Hulk'.istitle())\n", "print('covid19'.isalnum())" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n", "False\n", "True\n", "False\n" ] } ], "source": [ "print('Thor'.isalpha())\n", "print('3.14'.isnumeric())\n", "print('314'.isdigit())\n", "print('3.14'.isdecimal())" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0123456789\n", "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\n", "abcdefghijklmnopqrstuvwxyz\n", "ABCDEFGHIJKLMNOPQRSTUVWXYZ\n" ] } ], "source": [ "import string\n", "print(string.digits)\n", "print(string.punctuation)\n", "print(string.ascii_lowercase)\n", "print(string.ascii_uppercase)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Strip leading or trailing characters\n", "This is often used to strip blank spaces or newlines, but can be used for much more." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Natasha is a spy.\n", "Natasha is a spy \n", "\n", "\n", " Natasha is a spy\n", "Natasha is a spy. She has red hair.\n", "She has red \n" ] } ], "source": [ "w = '\\n Natasha is a spy \\n'\n", "x = '\\nShe has red hair\\n'\n", "\n", "print(w.strip() + '.')\n", "print(w.lstrip())\n", "print(w.rstrip())\n", "print(w.strip() + '. ' + x.strip() + '.')\n", "print(x.strip().rstrip('arih'))" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "What do you want\n" ] } ], "source": [ "y = 'What do you want?!!&?'\n", "print(y.rstrip(string.punctuation))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Find, and Count substrings\n", "Search from the left with find, or from the right with rfind. \n", "The return value is the start index of the first match of the substring." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2\n", "5\n", "What do you want?!!&?\n" ] } ], "source": [ "print(y.find('a'))\n", "print(y.rfind('do'))\n", "print(y)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Natasha is a spy\n", "4\n" ] } ], "source": [ "print(w.strip())\n", "print(w.count('a'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Strings are immutable\n", "Any change to a string results in a new string being written to a new block of memory. " ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4565794160\n", "4565793776\n" ] } ], "source": [ "m = 'Black widow'\n", "print(id(m))\n", "m = m + 's'\n", "print(id(m))" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Tony Stark is Ironman.\n", "Tony Stark is Ironman.\n" ] } ], "source": [ "print(s, t)\n", "z = s + ' ' + t\n", "print(z)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Slicing Substrings\n", "string[from:to+1:step]\n", "Only 1 parameter: it is used as an index. \n", "From defaults to beginning. \n", "To defaults to end. \n", "Step defaults to 1." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "567\n" ] } ], "source": [ "z = '0123456789'\n", "print(z[1])\n", "print(z[5:8])" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "012\n", "789\n", "89\n", "24\n" ] } ], "source": [ "print(z[:3])\n", "print(z[7:])\n", "print(z[-2:])\n", "print(z[2:5:2])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.0" } }, "nbformat": 4, "nbformat_minor": 2 }