Выполните итерацию по подстроке, чтобы найти специальный символ и удалить символ - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь написать функцию, которая принимает input_list, содержащий строки, и возвращает output_list, содержащий строки, основываясь на этих условиях. Для каждой строки в input_list: 1. если строка содержит '$', удалите все символы, которые появляются после '$' из строки, например, «amazeing23 $ ing23» должно стать «удивить».
2. Добавьтерезультирующая строка для output_list, например, «поражать» 3. если строка не имеет «$», добавьте строку в output_list, за которой следует его длина, например «world5»

def my_list (input_list): output_list =[] # перебрать строку в списке для элемента в input_list: item = item.split () print (item)

    # Iterate through each character to check for $ sign.
    for char in item:
        if '-' in char:
            char = item.split() 
            char = item.remove(item[0]+1)
            output_list.append(item)
            #print(output_list)

        if '-' != char:
            char = char + str(len(char))
            output_list.append(char)
return output_list

input_list = ["amazieng23 $ ing23", "world", "wuond3erful$ u3 "] result = my_list (input_list) print (result)

Это пример ввода: input_list = [" amazieng23 $ ing23 "," world "," wuond3erful $ u3 "] Ожидаемый результат: output_list =["amaze", "world5", "wonderful"] Я могу разделить список, в котором есть $, но я не могу удалить символы, которые идут после знака $. У меня также возникает ошибка «TypeError: Невозможно неявно преобразовать объект int в str», когда я пытаюсь добавить длину строки после строки для третьего шага.

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

Строки Python являются неизменяемыми. Вы не должны изменять определенные значения индекса строк, как вы пытаетесь это сделать. Вы можете сделать намного лучше, чем это.

Идея состоит в том, что вы повторяете свой input_list один за другим, попробуйте найти "$" в вашей строке, используя string.find("$"), функция возвратит либо индекс где "$ "присутствует или -1, если" $ "отсутствует в строке. Основываясь на этой проверке, вы выполняете необходимые манипуляции со строкой и добавляете эту строку в output_list.

def do_string_manipulation(input_list):
    output_list = []
    for element in input_list:
        index = element.find("$")

        # do condition manipulation here
        if index != -1:
            element = element[:index]
        else:
            element = element + "".join(map(str, range(1, len(element)+1)))

        output_list.append(element)
    return output_list

print(do_string_manipulation(["amaze$123", "amaze"]))

. В результате получается

['amaze', 'amaze12345']

Один неприятный код, который нужно сделатьчто

output_list = [element[:element.find("$")] if (element.find("$") != -1) else element+"".join(map(str, range(1, len(element)+1))) for element in input_list]
1 голос
/ 06 ноября 2019

Если я правильно вас понимаю, это должно быть то, что вы ищете:

def my_list(input_list):
    output_list = []
    for item in input_list:
        split_string = item.split('$')
        if len(split_string) > 1:
            pre_string = split_string[0]
            for char in '$'.join(split_string[1:]):
                pre_string = pre_string.replace(char,'')
            output_list.append(pre_string)
        else:
            output_list.append(split_string[0] + str(len(split_string[0])))
    return output_list

input_list=["amazieng23$ing23","world", "wuond3erful$u3"]

output = my_list(input_list)

for i in output:
    print(i)

, который имеет вывод:

amaze
world5
wonderfl

Обратите внимание на u в прекрасномотсутствует, так как он не может проверить, является ли это реальным словом или нет, и вы уже хотели удалить u.

Примечание: для удаления символов требуется вся строка после первого $. Например, Anacbborndla$r$b$rl вернется Anaconda

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...