Search code examples
pythonregexreplaceline-breaks

How to find exactly "\n" in Python IDLE replace dialog?


I'm a begginer in Python and one of the first codes I've made it's an RPG, so there's a lot of texts in strings being printed. Before I learned how to "word wrap", I used to test every string and put an "\n" in the right places, so it could be better to read the history in the console.

But now I don't need those "\n" anymore, and it's been really laborious to replace each one of them using the Replace Dialog of Python IDLE. One of the problems is that I want to ignore double new lines ("\n\n"), because they do make the texts more presentable.

So if I just search "\n" he finds it, but I want to ignore all the "\n\n".

I tried using the "Regular expression" option and did a research with regex but with no success, since I'm completly new in this area. Tried some things like "^\n$" because, if I understood it right, the ^ and the $ delimit the search to what's between them.

I think it's clear what I need, but will write an example anyways:

print("Here's the narrator telling some things to the player. Of course I could do some things but\nnow it's time to ask for help!\n\nProbably it's a simple thing, but it's been lots of time in research and no\nsuccess...")

I want to find and replace those two "\n" with one empty space (" ") and totally ignore the "\n\n".

Can you guys help? Thanks in advance.


Solution

  • You need

    re.sub(r'(?<!\n)\n(?!\n)', ' ', text)
    

    See the regex demo.

    Details

    • (?<!\n) - no newline allowed immediately on the left
    • \n - a newline
    • (?!\n) - no newline allowed immediately on the right

    See Python demo:

    import re
    text = "Here's the narrator telling some things to the player. Of course I could do some things but\nnow it's time to ask for help!\n\nProbably it's a simple thing, but it's been lots of time in research and no\nsuccess..."
    print(re.sub(r'(?<!\n)\n(?!\n)', ' ', text))
    

    Output:

    Here's the narrator telling some things to the player. Of course I could do some things but now it's time to ask for help!
    
    Probably it's a simple thing, but it's been lots of time in research and no success...