Как мне напечатать строку без каждого третьего символа в python? - PullRequest
0 голосов
/ 24 мая 2018

В настоящее время я пытаюсь выполнить эту задачу, когда она дает мне строку, например 'Python', и мне нужно удалить каждый третий символ или каждый символ, индекс которого делится на 3. В этом примере вывод будетбыть yton.Пока у меня есть word[::3] часть, чтобы найти каждый 3-й символ, но как мне взять каждый из них и удалить их из строки?

Код

word = str(input())
newWord = word[::3]
print(newWord) #for testing

Ответы [ 3 ]

0 голосов
/ 24 мая 2018

Входная строка является неизменной, но преобразуйте ее в список, и вы можете редактировать ее:

>>> word = list(input())  # Read in a word
abcdefghijklmnop
>>> del word[::3]         # delete every third character
>>> ''.join(word)         # join the characters together for the result
'bcefhiklno'

Начиная с другого символа:

>>> word = list(input())
123123123123
>>> del word[2::3]
>>> ''.join(word)
'12121212'
0 голосов
/ 24 мая 2018

Вот мой ответ:

s = '0123456'
print s[::3]
# 036

# first way(understandable) create a new str
s_new = ''
for i in xrange(len(s)):
    if i % 3 != 0:
        s_new += s[i]

print s_new
# 1245

# second way
s_lst = [c if i % 3 else '' for i, c in enumerate(s)]
print s_lst
# ['', '1', '2', '', '4', '5', '']
s_new = ''.join(s_lst)
print s_new
# 1245

# you can put it in single line
s_new = ''.join([c if i % 3 else '' for i, c in enumerate(s)])
print s_new
# 1245

# third way
s_idx = filter(lambda x: x[0] % 3, enumerate(s))
print s_idx
# [(1, '1'), (2, '2'), (4, '4'), (5, '5')]
print ''.join([x[1] for x in s_idx])
# 1245
0 голосов
/ 24 мая 2018

Проверьте это:

>>> word = 'Python For All'
>>> new_word = ''.join(character for index, character in enumerate(word) if index%3 != 0)
>>> new_word
'ytonFo Al'
...