Md. Samin Abrar
Md. Samin Abrar

Reputation: 3

Unwanted line break is occuring in python

I am want to replace a specific part of the string while using textwrap. But I am getting an unwanted line break. I have tried a lot of ways but still, it is not working. here is my code.

    import textwrap
    import math
    
    def wrap(string, max_width):
        wrapper = textwrap.TextWrapper(width = max_width)
        word_list = wrapper.fill(text = string)
        return word_list
    
    height, width = map(int,input().split())
    square = height * width
    
    i = 0
    x = []
    while i < square:
        x.append("-")
        i += 1
    k = 0
    
    while k < math.floor(height / 2):
            line = math.floor(width / 2) + width * k
            x[line] = '|'
            x[line + 1]= "."
            x[line - 1] = "."
            for h in range(1, k + 1):
                f = h * 3
    
                line_plus = line + f
                line_minus = line - f
                x[line_plus] = '|'
                x[line_minus] = '|'
                x[line_minus - 1] = '.'
                x[line_plus - 1] = '.'
                x[line_minus + 1] = '.'
                q = line_plus + 1
                x[q] = '.'
    
            k += 1
    a = 0
    while a < math.floor(height / 2):
        line = math.floor(width / 2) + width * a
        line_end = (math.floor(width / 2) + width * a) * (-1)
        x[line_end - 1] = '|'
        if line > width:
            x[line_end + 2] = '|'
            x[line_end - 4] = '|'
        a += 1
    
    listToStr = ''.join([str(elem) for elem in x])
    
    welcome_pos = math.floor(height / 2) * width + (math.floor(width / 2) - math.floor(7 / 2))
    
    s = listToStr[ 0: welcome_pos] + "welcome" + listToStr[welcome_pos + 7:]
       
    print(wrap(listToStr, width) + "\n")
    print(wrap(s, width))

my input is 7 21

Output:

---------.|.---------
------.|..|..|.------
---.|..|..|..|..|.
----------welcome----
----------|--|--|----
----------|--|--|----
-------------|-------
---

this is my output. But it is giving a space at line 3 which I don't want. I don't know why this is happening. Please help me.

Upvotes: 0

Views: 61

Answers (1)

leaf_soba
leaf_soba

Reputation: 2518

Maybe this is what you want?

code:

#(above the same)
print(wrap(listToStr,width*height))
print(wrap(s,width*height))

result:

5 4
-..|..|..||--|--||--
-..|..|welcome--||--

Upvotes: 1

Related Questions