python проверяет, является ли строка utf-8 прописной

У меня проблемы с .isupper (), когда у меня строка в кодировке utf-8. У меня много текстовых файлов, которые я конвертирую в xml. Хотя текст очень изменчив, формат статичен. слова, написанные заглавными буквами, должны быть заключены в теги </code> и все остальное <code> <p> </code>. Это значительно сложнее, но этого должно быть достаточно для ответа на мой вопрос. </p> <p> Моя проблема в том, что это файл UTF-8. Это обязательно, так как в окончательном выводе будет <strike> некоторое </strike> много неанглийских символов. Возможно, пришло время привести краткий пример: </p> <p><strong> inputText.txt </strong></p> <blockquote> <p> РЕЗЮМЕ </p> <p> Bacon ipsum dolor sit amet strip steak курица на косточке, ирурский молотый, круглый nostrud aute pancetta ham hock incididunt aliqua. Долоре короткая филейная часть бывшая курица, куриная голень гамбургер ут андуй. В труде eiusmod короткая филейная часть, ребрышки enim колбаса кончика шарика. Вырезка ут конскват фланг. Tempor officia филе дуи. In pancetta do, ut долоре t-bone sint pork pariatur Долоре курица упражнения. Ноструд рибай хвост, ут улламко оленина моллит свиная отбивная Proident Conctetur Fugiat </p> </blockquote> <p><strong> DesiredOutput </strong></p> <pre><code> <title>RÉSUMÉ</title> <p>Bacon ipsum dolor sit amet strip steak t-bone chicken, irure ground round nostrud aute pancetta ham hock incididunt aliqua. Dolore short loin ex chicken, chuck drumstick ut hamburger ut andouille. In laborum eiusmod short loin, spare ribs enim ball tip sausage. Tenderloin ut consequat flank. Tempor officia sirloin duis. In pancetta do, ut dolore t-bone sint pork pariatur dolore chicken exercitation. Nostrud ribeye tail, ut ullamco venison mollit pork chop proident consectetur fugiat reprehenderit officia ut tri-tip. </p> </code></pre> <p><strong> Образец кода </strong></p> <pre><code> #!/usr/local/bin/python2.7 # yes this is an alt-install of python import codecs import sys import re from xml.dom.minidom import Document def main(): fn = sys.argv[1] input = codecs.open(fn, 'r', 'utf-8') output = codecs.open('desiredOut.xml', 'w', 'utf-8') doc = Documents() doc = parseInput(input,doc) print>>output, doc.toprettyxml(indent=' ',encoding='UTF-8') def parseInput(input, doc): tokens = [re.split(r'\b', line.strip()) for line in input if line != '\n'] #remove blank lines for i in range(len(tokens)): # THIS IS MY PROBLEM. .isupper() is never true. if str(tokens[i]).isupper(): title = doc.createElement('title') tText = str(tokens[i]).strip('[\']') titleText = doc.createTextNode(tText.title()) doc.appendChild(title) title.appendChild(titleText) else: p = doc.createElement('p') pText = str(tokens[i]).strip('[\']') paraText = doc.createTextNode(pText) doc.appendChild(p) p.appenedChild(paraText) return doc if __name__ == '__main__': main() </code></pre> <p> В конечном итоге это довольно просто, я бы принял критику или предложения по моему коду. А кто бы не стал? В частности, я недоволен <code> str (tokens [i]) </code>, возможно, есть лучший способ перебрать список строк? </p> <p> Но <em> цель этого вопроса </em> - найти наиболее эффективный способ проверить, написана ли строка utf-8 с заглавной буквы. Возможно, мне стоит подумать о создании для этого регулярного выражения. </p> <p> Обратите внимание, я не запускал этот код, и он может работать неправильно. Я вручную выбрал части из рабочего кода и, возможно, что-то опечатал. Оповестите меня, и я исправлю. наконец, обратите внимание, я не использую lxml </p> </div> <div class="votes-question"> <div class="vote-count" itemprop="upvoteCount">7</div><i class="fa fa-thumbs-o-up"></i> </div> <div class="tags"> <a href="/questions/tagged/python" class="tag" title="python" rel="tag">python</a> <a href="/questions/tagged/unicode" class="tag" title="unicode" rel="tag">unicode</a> <a href="/questions/tagged/utf-8" class="tag" title="utf-8" rel="tag">utf-8</a> </div> <div class="clearfix"></div> <div class="action-time"> задан matchew <span title="17 June 2011 в 23:33 ">17 June 2011 в 23:33 </span> </div> <a class="s-link" href="/questions/433287/python-proverjaet-javljaetsja-li-stroka-utf-8-propisnoj" title="поделиться">поделиться</a> </div> </div> <div style="height:100px;margin:10px 0px;" class=""> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- siteask before post --> <ins class="adsbygoogle" style="display:block;height:100px" data-ad-client="ca-pub-2355906945027976" data-ad-slot="" data-ad-format="auto"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="answers" id="answers"> <h2 class="pull-left"><span itemprop="answerCount">0</span> ответов</h2> <div class="clearfix"></div> <div class="answer-pager"> <div class="pagination"> </div> </div> <div style="margin-top: 20px;"> Другие вопросы по тегам: <div class="tags" style="display: inline-block; float: none;"> <a href="/questions/tagged/python" class="tag" title="python" rel="tag">python</a> <a href="/questions/tagged/unicode" class="tag" title="unicode" rel="tag">unicode</a> <a href="/questions/tagged/utf-8" class="tag" title="utf-8" rel="tag">utf-8</a> </div> <h3 class="m-t-20">Похожие вопросы:</h3> <div class="related-block"> <ul> <li><div class='votes-answer green'><span class='vote-count'>145</span> <i class="fa fa-thumbs-o-up"></i></div> <a href="/questions/89525/skrytye-vozmozhnosti-python-zakryto" title="Скрытые возможности Python [закрыто]">Скрытые возможности Python [закрыто]</a> - 23 May 2017 12:34 </li> <li><div class='votes-answer green'><span class='vote-count'>81</span> <i class="fa fa-thumbs-o-up"></i></div> <a href="/questions/131651/luchshie-sposoby-uchit-novichka-k-programme-zakrytyj" title="Лучшие способы учить новичка к программе? [закрытый]">Лучшие способы учить новичка к программе? [закрытый]</a> - 24 November 2011 00:03 </li> <li><div class='votes-answer green'><span class='vote-count'>60</span> <i class="fa fa-thumbs-o-up"></i></div> <a href="/questions/82771/kak-razbit-spisok-na-kuski-odinakovogo-razmera" title="Как разбить список на куски одинакового размера?">Как разбить список на куски одинакового размера?</a> - 23 May 2017 11:55 </li> <li><div class='votes-answer green'><span class='vote-count'>35</span> <i class="fa fa-thumbs-o-up"></i></div> <a href="/questions/131196/pochemu-izuchajut-perl-python-ruby-esli-kompanija-ispolzuet-c-c-ili-java-kak-jazyk-prilozhenija-zakrytyj" title="Почему изучают Perl, Python, Ruby, если компания использует C++, C# или Java как язык приложения? [закрытый]">Почему изучают Perl, Python, Ruby, если компания использует C++, C# или Java как язык приложения? [закрытый]</a> - 20 May 2010 08:15 </li> <li><div class='votes-answer green'><span class='vote-count'>34</span> <i class="fa fa-thumbs-o-up"></i></div> <a href="/questions/185568/rasprostranennye-oshibki-v-python-dublikat" title="Распространенные ошибки в Python [дубликат]">Распространенные ошибки в Python [дубликат]</a> - 23 May 2017 10:30 </li> <li><div class='votes-answer green'><span class='vote-count'>33</span> <i class="fa fa-thumbs-o-up"></i></div> <a href="/questions/23418/vazhny-e-reversivny-e-pary-leetcode-time-out-duplicate" title="Важные реверсивные пары leetcode time out [duplicate] ">Важные реверсивные пары leetcode time out [duplicate] </a> - 25 October 2014 10:12 </li> <li><div class='votes-answer green'><span class='vote-count'>31</span> <i class="fa fa-thumbs-o-up"></i></div> <a href="/questions/2518/ne-udalos-uznat-nomer-telefona-s-kodom-strany-ispol-zuya-regex-v-python-duplicate" title="Не удалось узнать номер телефона с кодом страны, используя REGEX в python [duplicate] ">Не удалось узнать номер телефона с кодом страны, используя REGEX в python [duplicate] </a> - 22 March 2017 17:18 </li> </ul> </div> </div> </div> </div> </div> <aside class="sidebar"> <div class="awrap"> <script async src="https://yastatic.net/pcode-native/loaders/loader.js"></script> <script> (yaads = window.yaads || []).push({ id: "553274-2", render: "#id-553274-2" }); </script> <div id="id-553274-2"></div> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:inline-block;width:300px;height:600px" data-ad-client="ca-pub-2355906945027976" data-ad-slot="8038370725"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </aside> </div> </div> <footer class="footer"> <div class="wrapper wrapper--sm"> <div class="footer-navs-col"> <div class="footer-nav footer-nav--menu"> <div class="footer-coryright">© 2017 - 2020 Вопросы и ответы по программированию</div> </div> <div class="footer-nav footer-nav--catalog"> </div> </div> <div class="footer-contacts-col"> <div class="soc-widget-col"> </div> </div> <div class="clearfix"></div> </div> </footer> </div> <script type="text/javascript" src="/js/ui/jquery-ui-1.8.16.custom.min.js"></script> <script type="text/javascript" src="/js/ui/external/jquery.cookie.js"></script> <script type="text/javascript" src="/js/versions/menu.ru.u1607887878.js"></script> <script type="text/javascript" src="/js/jquery.fancybox.min.js"></script> <script type="text/javascript" src="/js/slick.min.js"></script> <script type="text/javascript" src="/js/jquery.maskedinput.min.js"></script> <script type="text/javascript" src="/js/versions/scripts.ru.u1607887878.js"></script> <!-- Yandex.Metrika counter --> <script type="text/javascript" > (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; var z = null;m[i].l=1*new Date(); for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }} k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)}) (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym"); ym(90030325, "init", { clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true }); </script> <noscript><div><img src="https://mc.yandex.ru/watch/90030325" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-123993370-1"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-123993370-1'); </script> </div> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "WebSite", "name": "Программирование - вопросы и ответы", "alternateName": "Программирование - вопросы и ответы", "url": "https://legkovopros.ru", "potentialAction": { "@type": "SearchAction", "target": "https://legkovopros.ru/search?search={search_term_string}", "query-input": "required name=search_term_string" } } { "@context": "https://schema.org", "@type": "Organization", "name": "Программирование - вопросы и ответы", "url": "https://legkovopros.ru", "logo": "https://legkovopros.ru/i/logo.png", "email": "info@legkovopros.ru", "telephone": "" } </script> </body> </html>