["$ remove.$~.F$ ","\"85removes HTML with re.subremoves HTML comments","EAOINOOA)reNOO# This A? cA( HTML.ONvA_III<p id=1>Sometimes, <b>simpler</b> is better,Obut <i>not</i> always.</p>IIINOO# Replace HTML tags with an empty A?.ONA:A_Nre.subN(NI<.*?>IN, II, v)OAP(A:)OONOOSometimes, simpler is better,Obut not always.OONPattern detailsNOO<E Less-than sign (matches HTML bracket).O.*?EMatch zero or more chars.OE Match as few as possible.O>E GAMr-than (matches HTML bracket).NOOA)reNOO# This HTML A? cA( two comments.ONvA_III<p>Welcome to my <!-- awesome -->Owebsite<!-- bro --></p>IIINOO# Remove HTML comments.ONA:A_Nre.subN(NI<!--.*?-->IN, II, v)OAP(v)OAP(A:)OONOO<p>Welcome to my <!-- awesome -->Owebsite<!-- bro --></p>O<p>Welcome to myOwebsite</p>N","K*BeAAffXBVCC| 694}F+CC 694}[CX","Remove HTML Tags."," HTML is used extensively on the Internet. But HTML tags themselves are sometimes not helpful when processing text. We can remove HTML tags, and HTML comments, with Python and the re.sub method. ","re.sub ","sub-python","Example."," This program imports the re module for regular expression use. The string \"v\" has some HTML tags, including nested tags. We call re.sub with a special pattern as the first argument. Matches are replaced with an empty string (removed). ","In the pattern, the question mark is important. It means to match as few characters as possible.","So: ","With the question mark, the entire string is not treated as one huge HTML tag.","Comments."," This is a bonus. HTML pages often contain comments. These can contain any text, including other comments and HTML tags. This code removes comments, but it does not handle all possible cases. ","This code is expected to mess up when a comment contains other comments or HTML tags.","But: ","On simple pages, this code can be used to process out HTML comments, reducing page size and increasing rendering performance.","Discussion."," These are not perfect methods. For web browsers, advanced parsers with error correction are used. This makes them more compatible on real web pages, but implementing that logic is challenging. ","Instead: ","These simple methods can be used to process pages that contain no errors or unexpected markup.","Summary."," With the re.sub method, we remove certain parts of strings. The regular expression argument can be used to match HTML tags, or HTML comments, in a fairly accurate way. A new string, containing just text, is returned."]

%iVBORw0KG;)NSUhEUg?ANo)vCAM?ACynCRD)GFBMVEX::x/vrd:Cs3ffI5fzh8f3D7/N+xvnhyvu1?AC5UlEQVR4Xs3X4W7rMAgFYB+wnfd/4ztdSzkzJaMko9r5iTD2tzJVbW8Go/c+RrMZ/+urMH5M25uaG7+F1xdkHCvd1PVYGexxwqOdBYXrgrJl2Ou1gNYvZn9/d49oVu/atg5e/6dpavT+Q/uHaYBLA3DSAMQ024JmA7K4kUAVDSKiDk2+ctLYcxXFS0u3MpmGxuv/LM3q/ZfSUE9DhibKnI9f6V+Box92PY40DfdgemiCxnCvpqzYMe5GkqBv0/RQ3IF95XdoMLST7n9omqEdxCVgdTS+ncF5TFI04hKwBA3Md9pYpWZp05l3CjRHIy4BS9BY3mmsb7TzoLeP800aBItGXAhjtIqmLwd5St6kCdHEBTCmV9HEDgT3MUHjTREOajuraYezjwka2QYXw+podiNZkQTNxYUwEfMmL7dpdiPBwts0SIjzYYJq2grMl9rI0EKchU3Cqmh2I8mRkObjposbHqyYxo9t38eeoFmcvj5JWVDC6mnk88gIaO/jSDOwahoxun2ptYgW40gD15ywWtqQfSPBfYxoEY5j94d3wi5oc88jGgHEIKIFOF59cJKPs7NlzwMauxQifHuOxoCwncYoPkDDdprKnqcx6Jujed8Jo5zWRNwfAu0BjTD+kXycTwPziIZtI7mPd2lQC1s0D9d9WmMe03hcOSamxbApqyoGR3klrQ@TLtFGxYm4JVXuEIanPs0SfNhSxbiRi1NzG0JWgCLcVpFczey5Wl6BYtxVTRvI/sjGmEhrp5mN3IENJveIOrAIlwxzdvIlqQp0QYW4appdiN7lnYsmgMLcX1RSmlCGu7RCEvgWuujjsaN5Og8TQjL4GitoNmN7D/Q5uX/GmEp3P5WEpw3wJxV7q9HBmkvrUKKmnkmnbAsbnPKnGP3y8ocrG/tts52Kjj6cizEzUKj3Qmw0Ug1NDseQR1Oq7hjI1pDu5vP0XCL9jwgwa23C3LcHtd8G+HPAyBTx3U9UXuaf3c4c2pBAnqY)AElFTkSuQmCC$/9j/2wBD?cHBwcHBwcH.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.n/wQARCADVALQDACI?RE?hEA/8QAXgAB?IDAQEB)))?ECAwQFBgcIE?CAgECAwMG.kIAwE)?gEDEQQSBSEiEzEyFCNBQlJiBkNRYXKCkqLSFSQzU2Nxc5GhNIGDk7KzwvCxw+Lz/9oADAM?AE?g?PwD9Ig)AHnOK/CfRcKv8AJvJ9ZqrfE3klNb9n7u667Tpv/Znoz4/ZVbVreKxbnL8T4g65bd5t9Ta9X3CJnB0OHaRNbc9bdoipX8Wewv8AhloqWX8x4lb0q26qvSfZbfra+si74X6OvZjRcRs3ru83Xpuj3W36qvrPIFiu6TuTwTS9eGsPXv8ACvSqtbRo+IPvXMwlem3V+63514zQn4a6LZS/kHE37SPAtek31e7b+e/7faHFU5NPeNxevgulaLeqw96vwp0s11vGk18y/ekV6ben0vzrYbyceo2I/k2r6vU2Ub/reePGUeg7lEdxMSaeo4bpqu5rD1Gm4hTqNi4epnnpW2FVvuPYh0TztCrvomc/pq8Y9rceiLQcPUJCPiCY?M))))?APj71XV63ivaZ6uJ8Qdczu82+rter7h9gPkj13LrOK9puz+UuIMu6d3mn1NvZfU2FWOzwT+1PP7Mxl1WZmFiJzPKIiOqScHR4bqa9LfvsSGho278dVfvKVPTWvKo8qu9jZo4PqWiGeVr+bxMaE8C1FUbkdLfuHpNTxSmloSvFrd8znpj6xXQamdZp0v7Oa90t053fWUnEHKXV65Ee6V2K:AH+IebpVlaVaJWc4mJ9B26PQYuI1quoR49def1C9HoBe2ztq0s9s7NMLvpzM/pK8Y9rcd889TKy9OZx5yvH0tx6DJaDzmqjzhaAQSSao)?BWWWO+Yj+8jentL/MEZLgiJiYzExP7gCSQ)AD5VZMxq+J9q8Q35R122Hbq7Pym3Z9TYfVT4/ZTe2t4q10Nn8p8Q2b42+a8rt7Lb7mwhjscEiJ1T5b4s2Zer20+0pHaU/rE+0pptT8xiar5ih6uKkn1j1XCtJVqpe1mVkrnG2J72946+o1FGiq3vhY8KIsdX0VU4XA69f2FnZditW/41Wdt23Z0qj19BTjS6zdR28VMizZsepWXqfZvVld7PZJ9ByLKe213Ytd0/xP8AvnDG+qfVXTa31V+RfZN+iTiU+g6tPoBsX1wsbI8J2qpWXozO2O2qmPnbcnSekiY+WDydeGejLQvnqv723J0np1iS0Hm9YvnDPE/OWyUiC5JozBOQQAVJI5AxsUZsFZnBrXukWLDMscvTJklEiXiJ5pGZyc/VI83I0JLRCr6Ny+JzJNl9kNlNu7vmFbdJsLzSqYYwb+b5U6FUxtnnHf6AY6IlU5xOc+kGFp5uZonkbQAJLg?A+dPVY+p1+/P9t1e3l8X277PuH0U8o9btbqWbOfKL/Rt6e0fYRJv8Os7K55/Znn2o+Y1XpPQvTHyGjbV38iuD0dWpyZeG8Ro01Eae7KbJaVbazLKu2/1DW4txGnVqlFOWVX375jbltroir9o0ra+81GUjJlr0tE3+U+sXrOnTPcctDoUz3CDJfHI69UQ76fqhfP1Nz9OyxOk9Yp5Cpd76bnC+fqbn6djb9p65ZgvB5fXR5wzQXKRMFoJOdJIGQCpEmNjJJjYxv3FWPO6+b51r1zZbXR5LU26t2qxZ29u/qT3FU09JrqbMUrbq8WT0WWWWdbJ+qZ33mbiUvPEXreZWl9HXETPSvaPZqN+339m05ml0l1fkqWW09jp2Z0ZZbfY27ecpmiLrYazZ/8An/uHOZoi62Jb/vZnsdE3m3xvbZYy9bM/qo/if6QMfDnrdL9mf07bp+Vuzq8P3QdGucokm6nNEk6gANgz?ACTUu0ldzb5axJ9zpz9s2p7ikgmJmO451vDKrOfa3ry9Vq/wABp38Gpt+P1KcsdDVr9brpOw9ldcxDOqzPdDMq5Imf5AyxdZHrWHl9TwCi2EiNTrK9sYma3oXf7zb6bDRv+DtFi1rGr1tcpGJat6N1nvNv0tnX/D7M9g0Gu1YxBu16myY52Wdf7Q8zPwb07VVJGr1yykc3V6N9n0vzU2I4HStSJGp1kSnr76N7/S8yeghOUfuGzlIxBedRZPfZZ/mHN0nDqqXSyXttdI6ZtZWx721ErTedxDAimwsA1bGyZYJmcRMlIkhp6ZJg1HnEPJPaN8kT/cVW1t8LMRzIRoiWzMRGPTO0xRZutScY9H3S+DTayY2Tu+MNyZKyRkZMcrkzS2TWv0el1MrN9FN23w9rXXbj6O9B+T9DsRPJtPsTwr2FfR9FdnQbZYxbBERJjqpqpXZXWlaZztrVUX7KAygtgvgsAC5Y.JAInuKSWnukx5AOFxKvT0q/jsutno5934zc0NdtOlrS3xxu5Z3YXd0KYNdVrLNXpnqSpqlld29a2aOrr8fX/lnQaQWiCY7p/eUmICzyn95jZ+ZBnRZMsRHImYKQ/KCd3IiZLYktEFzGslp7iJbEFZgvmCJ5xMTkRETEfKI75IhnyhRliYcpNaz6WKxWqtDRM5gzYKSbESc+ypI57TWbW1x3w38l/GY54nRHq2fyX8Zj0cJY9sMitEIzZZd2GOdr5iLViEVI7NZjauzf7231P8A4NpK62fZKnm9Vr9bTpfK1sr29p2fZ9n+07M9SpkMamSDSk9ShYAEGQ?EgSCJAImMxMFZT5/6FyJzgEwYZr+f+hhav5/6G0YXBkWOZpt0xMZyar2czZt9J5Ttrfbf7TGrqNTFEpErv3nU0tHaw8+wemV+S/uMu7kebSy3l1v9pjfqd572af3yUjUw3ql7NNt9Y7CyZu80Ulpjvb+ZuJ4YyZFbcaNi7TJET8paImJzJBaDLCxnJgmSSMFoJwZcmFlycWNDrEzKWqme/a9i5+4a9vDNdc25rUacd7vYzbfsHosE4NiNQ8c47P/ACzhW8C0lsbGbU7f1flNnZkxBYjBY15O0sYJABBI?JBEkiQC?CYKSYmgyyYmKzOC6mm8d55FYPZtHM8hWcXidsQ+n/AMT/ANZ2dA3Rb/hmnqNJq9RcipZC046o8OPpe2ZdHDafUrSj9pG5Vnb4Z9s2tWy16O5ps7LK43zu5b/oE8FpoilrVdbW3Y3RDLsXb4drmzp7c05nwlb268QeirWcG4sdMGtT6TcWOUG3VETGTRtnmMFgTgzmCZJgtBBMElZGCcCCYBSRBIAIJ)?EmN7q652tPoz6xTymj2/6MAZgUSxLI3LOYzjuLgZKSYmMjuqLLtOIjvk1G1Wnn1/ut+AxurzHJTMiy3cpM9542ue49at1VjQqtz/cymgvCNNE8mt+0v4Dz3EdNqbnq2L4O0/Seb/VnS0tqURbFnrnItoq1dLUWZ2Nt91oZPWNrQ6WnQ1TVXu78yzzuaWOonDKPat+0v4DNHD6fas/mv4DLRptdCbPV/iEWX6aZz/6ytDeL6pvJ4YMVelSvOJac/LK/gNhYiIiP/J19PXYiYc0rXRp6RgkkmINkw5IgkEggQWggkFQAIBBI)AOfqts3JnONq5x7O5yltKJXvjd4sRmVM99djWo6xnbC+lfFuKOmoZZSUWImc8tvi+2SVkyaT9G30v8AihsmvQjVpKtHrZM4Iya+sj83s+r/AKkNCrSJZUj5bOerEr4d2zpOjqEayl0WMz0/6jUVdWmyFrWNkYjmvP75lT9HiG2G7S8xXiG2N2hrVVqurhFzhZsj3vC509pq1U3+URa6Qvimea+ydDBr31wzpJNz5lOr4sxxBfBIiCFXBgmSMEjBJcjJGATgYBGQS.Q?CATBEEg)SC)VmDXuiZ2/WNV9yysRENzx37cG+/oNeaoznPpz3GWGnHI03qSbnli9MT1/VN;nrFyjc5NmldtaQCMEgqZskYG.BkjAwSACMEg)gAn))NOLrXqruhqq0ZVnzkM2G+lvrMss8xDq9WzHpjd/zNR4e2vR3bOhZ3NWsf8S9VU9lqN0dmtjNMQ3ThSCDfABJI)?wQSACASACASACASABg))?AGis4aJiX258GV2R7vgLz15zL4n1crt/0CqI6uWZiOUGRoxK4iI5fIa6s8xmWMCs8xncZwAbBn)))))))?MEU+9/Qv2c+1JkBSK0gpFaQ?XLg)))))))AH:Z%iVBORw0KG;)NSUhEUg?AIw?ABpCAM?ADflzs9)VFBMVEX::2+fju9PHy9/X0+Pbx9vTo8Ozj7ejZ5uDP4tmwz8Dd6uTL3dTV49x8sJe208Wuzr/P39drpoq61chopIecw7CSvahgn4F1rJFjoYOAsppyqo9IgRfD?ACtElEQVR4Xu3XyVKEMBSF4cxh7Hn2/d9TrtE+VUhTaJrcLPIvLGXjJyegiq/0ZfPIoIBRt2sOBYzLCePzwZiA+bgwtvnBaNES5iylYUlrLbffGGnlF+YiteJKNyPMWUjNkh0wu18YprTNCCM1PwZpZfLBmJwwumAKpmAKpmCSVzAFUzAF47oQvlgCcEMrYtxfMBboVTBtTpguG4wfDCoXjCXQNMb3g6/3Iwo1Bvlq3/Wti8aIfdfVwFCghtw8BnP3Jhbj.EMLMjNYhSAdSyGFO43Zk+KvuoJs39iTLhQDT0xNSm86wM7DiPCww0MoA6fvD7A6ueOtKSPxVSkGGPa502vCTuD8T9YQ8xYDDHUGENr+Oc362cw9LNYQRHGRmJoJz/GYBwoxxgcLmepeEwYov4/pkPxmDCEeRNGxGIsTTJ/ZtJhaPbqH08T2AqAaAzt5Be+ZwxhzOjR7u3bMEG16A2MWSqBlx6qojHYff53E2YhJy68GVMBA820RVjAoXkTBqz5v2eQaseXXRU2da7831QwBbNmUjapMPK4na1pds0lFcadrgtKhTlkhPH5YIxoCXM/ve5wSIXRAbNTbjLvvFKXK3VOgJEVYRqpJ7PWmPPTsjJG2m+MsFMpZRUsqTBbIScyRmhYEmJeBEsSTAvMjCUl5jhv4cfAwo+BhR8DSzKMUMBMWh4yIeblTE2wWJEQo19gtsGihGC+M7A4wYyBZaPA4JsJG/HfGVj4McfReeF66cGygYURc8RG3BicF34Mzgs/BueFGwOLEvwYbMSPgYUbsx2dF14MLPyYY4eNuDH3xwGW5BhkFDmw0SLMppls20S0o84nWJZhEgQLP+bmxTLMx/qWUy8WYjbX+7pdb5VYlFau7uq12g8NH71YilHGGLlKhpJieUZbtWbWavGH5MqJuEqfDRAN8iKPPjs)ASUVORK5CYII=$/9j/2wBD?gGBgYGBggGBggMCAcIDA4KCAgKDhANDQ4NDRARDA4NDQ4MEQ8SExQTEg8YGBoaGBgjIiIiIycnJycnJycnJyf/wQALCACiAMgBABEA/8QAUgAB?MBAQEB)))?ECAwQFBgcQ?IBAgIF.cDBAM))BAgMRBBIFEyExQSIyUVJhcYGRoQYUM3KxweEjJNFCU4KyYmOi/9oACAE)/AP38HDiJPXS2vh9DLNLpZ8l7cYiUMRoanrasZ6vFzyRk8jyyoRzT286Oe0e9nysUoRlGKUYz59tia7T6n2Eq4iniNJUs/wC1yYbU0r7IzvX1klHhmWTyPu6c9iNUS))DixFOetlyXZ22pX4GWrqdR+TPlfbXCY2tV0ZUw+EnXp0qeKVWpSg6k4ZnRlGOWF5Wnklw3pHyap4p05VfccZlg0nfCYhS29EHSzPwR73sbRq08TpDGTpVqOuhh6MY16U6N9U60rxVVRk/i9B97h5chHXHcW))AKSOepHYcNamzFQyEndo6/6nh9z0))ck9J6OhJwni6MZRfKjrIJp9quUjpfRc5KEMbQlKT5MY1YNt91zrzElJRMpUkcuIoS5OSL49phqa39uXkztwEJwVTPFx3b9m6523XShddKF10onfu)?PyjEVIe8VeUufLj2nmn67CqbwkaEEZQRPd4lVcBpl6fEu)AD8yxXszpr3irKOGUo55ZZaynZpvftkmc69ntLZlGVBR285zhZeUmfe0pO56FLcbokgqyk93iRCW01TZWTVyafEu)ADmqUe055YPbzvQtTwq6fQ6oU+01QMK2KwtCWWvWp0pWvlnJRduneWUoyipRalGSvs2pp8UUm9hEJK5prI8UxJrYWp8S4)AKsjKEiyJB4WmtDYrSOKhXoTpxjGmoctyTunJ8IvpPUw9N4fC0aU2v0qcIStuvFKOwO01yWRkZbIy6g+wvFZU3cjW0uvHzQ1tLrx80NbS68fNExnGXNkpdzuWu)?Azk0jiaeCwlTE1VLJBx5ls3KkoK2ZxW99JyaK0lQ0i62phUhqsubWKO3Nm3ZJT6p6ViUWMsT8CXh9UeeCGzpwXPl3Ha.)ADzMTTWlKMsDXbhTq2eanbMnBqf9Skt8egto3Q+H0XKtKhOpPX5c2scXZQzWUcsY9ZnoWFibGOK+BLw+qOCLWZFuRtKztZGmDl+pLu+53JliQ)ACqhCL5q70kWABhivgT8PqjziYyInPyNMG/wBV/L90d6Los))GZVoOpTcL7X9jjeDq9MfN/wV9zq9MfX+CHhKvTHzf8ABehRlSk5Sa3cDqiaplg)?c+M+EvmX0ZwgHZg/hP5n9EbsgpIxci0JG8WaI)?HPi09Wvm+zM8LBZamsXR9zbV4eyllW+y3nPioPW8lcEbYSL1b+b7I3IZnNGE95Eb3OiBoi1w)ADLEcxd5lSnGClmVwqiuupdtEVJqcs3A2w/MfeaMrmKNlGiLF4l0y1xcm4J)M60ZTisqu7mGpqdX1Q1NTq+qGpqdX1RvSjKEHmXEmT2HPOqZqsuk0jMuSLlrkpk3LAk)ABmVROxw1oz6Uc6jUvvRtSqbfQu8VLO46vZe17/gl4uX9u66c34IeKlwp3/wAvwW962cz1/Aq4xUqjp5M3jbf4FVpD/r/9fg3jiti5Hr+C3vX/?9fwdI)ADKTWw5asTmcHcrTi8772RCLzT+eVvMzrYpU5OEVmfF8ClPFKclGccrfRuOmUlZ7DPFyXvM/D6I1jg6mSE4WkpJdlrnTDDTy8rZsMsyPS)?IaM5QM9UikaXKfecyTzz+eX1OOM40K1TWQzbdnYRVnGvKEacLSv4nbNLK77uJjjV+6qeH+qO5e8Sw1H3aS5qUt22y7TWnro05Srv8Ap7N5xnq)?AixBGU4Xz534Sl9Ss6VOpz4rvIhRp0+ZFX9SZpZXwXSY41fup+H+qIo4irQ5j/x3o6ZV6lWKzPt2FD1))DzcbsqfwZJvUt34ik3lnt4EUviwT2ptbGaaQS1ydt8dpyHVDmx7kSt6P/9k=%iVBORw0KG;)NSUhEUg?ANI)9C)AD94GjJ?ADQklEQVR4Xt3awW4yMQwE4P+heLq8VJ7HZ5/nOtf8DS61QIFJCt0I5kKlKM1+8tpit/3XLiEBd7cedwfYVG63kG1/WpAIt0H8PosYb8G0Cp7Bi0nJGcRHqNT8GsWrQ19L4ggijpM7ZGD2d6Rm6ya5Q5foWJI26R2qRAeTtMmliaJEf0ty01kmmSjRfhKWSRAl2k5y0QxyR248ggTLeET0RpDWu4lmh5HcAbJlCElyAPzZROi5DDuKRMq5dHsm2WQNMFg+inQvy2dStN9+EkS3q+YfcHeTKEiqTKJK2EBqgiR22Hgtq/4eJH9A4u0A3X3j4QlSehOwh4Rfk/yccaflQ+XuIc550t1nb2RBDiHpiazDCwg9Q7GzbSPR1o9EiHAOR+Rw7iHBfnffdVAtp9OpfOXxLs8cQKKbrY9wdpGjgyJtluR/QYI9SlsoUj1NkvATdx5NmjsQWSTrQFVbRtBzNIkr4w5fonoNsO+CfVu/f4yOc++fxdrtQrRk8QvAajlvsBaJX1fLKRjlfGp8SpLPipJUNOk2UAs/HZr6SJDqComzjRQmlG6qWCRVtVBPpUSdxqRYwJcRkmSYFQWpA84qihsPjdF3/aOohUgNQ5LKmRwWno8qLxkPud27qZwi/pBkeYXdLBauCp56XnVW3H9TJIMWJQm0GioqkiVJLbQYD9ckC07OhzJNMmhRmtgZHVVfSArP@TN1JmYJJkUJSlqw1eSAlfM6l2Sd6x114XEqwDDMmmRhWiKRHKWlM01IKXQY5T/Exe6+Nre6WZdVHM+tNDZmJQyRcIdUjZTSZJ+ujDO0Xk+PFLytIggyRsvBkQdkALdlz1JyoRJUV5/PlvYkASgWwCsjYcyIOUhLUmqANCicHtM21KZ8Pge9xSJtWuqlXukFt4kyTL5VI1W4hlne0WilZKkX+Rp0WZStNIzJKhv7Mc+1UbnrZCUaAHz+tcp+QVipZeUaCspW+mJiQd77pL2v+Y3vFi0/524cV60n0RqUZK0aD+J8XwNkg/+om4Pvv75newjDS5PPAPCprKVpMOPI3l7JxJmSPw4Etqnkbx9Gsnbm5Fc33XvRmpU/yf+fqQewsX/5r8bKUIiZe4A21vmP24hqdv1SRFy)AElFTkSuQmCC!