Replace changing string including uppercase character with lowercase character - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Replace changing string including uppercase character with lowercase character (/thread-16988.html) Pages:
1
2
|
Replace changing string including uppercase character with lowercase character - silfer - Mar-23-2019 Hello My input lines : <p>Material blabla ;<lb/>Dimension blabla ;<lb/></p> <p>Sideral blublu ;<lb/>Sticky Gonzalez blibli;<lb/>Reductio ad absurdum bloblo</p>For each "<lb/>" followed by an uppercase character, I want it replaced with a white space + same character but lowercase. My wished output : <p>material blabla ; dimension blabla ;<lb/></p> <p>Sideral blublu ; sticky Gonzalez blibli; reductio ad absurdum bloblo</p>I made several re.sub trials with unsuccessful regular expressions. I also read several things about it : it seems not so easy for a beginner in programming like me. So, if you have not an easy solution, please tell me what I should learn first before understanding it. Thank you RE: Replace changing string including uppercase character with lowercase character - Larz60+ - Mar-23-2019 show what you've tried. We'll be happy to help, but will not write the code for you. RE: Replace changing string including uppercase character with lowercase character - silfer - Mar-23-2019 Did I in fact try something? I wanted to do something like this : import re list = ['<p>Material blabla ;<lb/>Dimension blabla ;<lb/></p>','<p>Sideral blublu ;<lb/>Sticky Gonzalez blibli;<lb/>Reductio ad absurdum bloblo</p>'] for member in list: output=re.sub(r"<lb/>\something-to-match-next-string-with-uppercase"," identified-string-with-lowercase",member)... but it seems there is no regular expression for this. RE: Replace changing string including uppercase character with lowercase character - ichabod801 - Mar-23-2019 In a regex, [A-Z] will match an uppercase character. RE: Replace changing string including uppercase character with lowercase character - silfer - Mar-23-2019 It is true ! New code, then : list = ['<p>Material blabla ;<lb/>Dimension blabla ;<lb/></p>','<p>Sideral blublu ;<lb/>Sticky Gonzalez blibli;<lb/>Reductio ad absurdum bloblo</p>'] import re for member in list: output=re.sub(r"<lb/>[A-Z]"," [a-z]",member) print(output)Output : <p>Material blabla ; [a-z]imension blabla ;<lb/></p> <p>Sideral blublu ; [a-z]ticky Gonzalez blibli; [a-z]eductio ad absurdum bloblo</p>So, identification is ok, replacement no. Should my code do something like this : 1. Identify the character to be replaced - OK 2. Place this character in a variable 3. Lowercase it. 4. Put it back to the right place in the line. ? RE: Replace changing string including uppercase character with lowercase character - scidam - Mar-24-2019 You can pass a callable to re.sub . This callable should take a regexp match object and return a string. The latter is used to replace substrings that were found. I think, you could adopt the following code for you needs: def match_processor(m): print("Hey, I am match processor... ") print("Regexp engine found a substring: ", m.string[slice(*m.span())]) print("This substring should be replaced with another one ... and I can do this!") replacement = '-' + m.string[slice(*m.span())] + '-' return replacement list = ['<p>Material blabla ;<lb/>Dimension blabla ;<lb/></p>','<p>Sideral blublu ;<lb/>Sticky Gonzalez blibli;<lb/>Reductio ad absurdum bloblo</p>'] import re for member in list: output = re.sub(r"<lb/>\s?[A-Z]", match_processor, member) print(output) RE: Replace changing string including uppercase character with lowercase character - silfer - Mar-24-2019 Scidam, I am sincerely grateful for your effort ! As a Beotian, I simply copy-pasted your code and ran it, unfortunately with no different result: <p>Material blabla ; [a-z]imension blabla ;<lb/></p> <p>Sideral blublu ; [a-z]ticky Gonzalez blibli; [a-z]eductio ad absurdum bloblo</p>However, your proposal reminds me about "definition of callable functions" and this is good. In your code, it is like the defined function is then not called... Or I miss something? Cheers RE: Replace changing string including uppercase character with lowercase character - scidam - Mar-24-2019 (Mar-24-2019, 08:07 AM)silfer Wrote: In your code, it is like the defined function is then not called... Or I miss something? match_processor function is called (by re.sub ) each time when re.sub finds a substring that matches specified conditions (regexp).
RE: Replace changing string including uppercase character with lowercase character - silfer - Mar-24-2019 Sorry, scidam, Your code produces a result. The got lines are : <p>Material blabla ;-<lb/>D-imension blabla ;<lb/></p> <p>Sideral blublu ;-<lb/>S-ticky Gonzalez blibli;-<lb/>R-eductio ad absurdum bloblo</p>But the needed lines are : <p>Material blabla ; dimension blabla ;<lb/></p> <p>Sideral blublu ; sticky Gonzalez blibli; reductio ad absurdum bloblo</p>The difficult task seems to be (example: first line) : - Take got value "<lb/>D" and replace it with " d" RE: Replace changing string including uppercase character with lowercase character - scidam - Mar-24-2019 I didn't post exact solution on purpose. This task seems to be an assignment, so, it would be better, if you try to modify the match_processor function for your needs by yourself. In this case you might ever use a lambda function instead of match_processor since string replacement requires one line of code only.
|