Могу ли я объединить 2 непрерывные пустые строки в списке в 1 пустую строку, чтобы, когда у нас было 4 пустых строки, он должен объединиться и сделать 2 пустые строки - PullRequest
2 голосов
/ 29 января 2020

Я хочу объединить 2 непрерывные пустые строки в список и превратить его в 1 пустую строку. Например, если он находит 4 непрерывных пустых строки, он должен сделать из него 2 пустых строки. В Python.

str_list = ['hi',' ',' ','hello',' ',' ',' ',' ','bye']

Desired Output : ['hi',' ','hello',' ',' ','bye']

Ответы [ 4 ]

1 голос
/ 29 января 2020

вы можете использовать while l oop:

i = 0
new_list = []
while i < len(str_list) - 1:
    if str_list[i] == str_list[i + 1] == ' ':
        new_list.append(' ')
        i += 2
    else:
        new_list.append(str_list[i])
        i += 1

# grab the last character if last 2 are not ' '
if i < len(str_list):
     new_list.append(str_list[i])

print(new_list)

выход:

['hi', ' ', 'hello', ' ', ' ', 'bye']
1 голос
/ 29 января 2020

Надеюсь, что это работает:

count=0
l2=[]
for i in str_list:
    if i==' ':
        count+=1
        if (count%2)==0:
            l2.append(' ')
            count=0
    else:
        l2.append(i)
0 голосов
/ 30 января 2020

Если вы не хотите удалять все пробелы:

words = ["hi", " ", " ", "hello", " ", " ", " ", " ", "bye", " "]

rv = []

d = " "
skip = True

for i in words:
    if i == d:
        skip = not skip
        if skip:
            continue
    rv.append(i)

print(rv)

Вывод:

['hi', ' ', 'hello', ' ', ' ', 'bye', ' ']
0 голосов
/ 29 января 2020

Попробуйте это

count = 0
new_list = []
for i in str_list:
    if i == ' ' and count == 0:
        count = count + 1
    elif i == ' ' and count % 2 == 0:
        for j in range(count // 2):
            new_list.append(' ')
    else:
        new_list.append(i)
        count = 0
...