Обрезка строки в python - PullRequest
       3

Обрезка строки в python

0 голосов
/ 20 апреля 2020
str1 = 'test1[2291];test2[NOT (Ready or Design)];test3[>=1 And NOT = 5]'

Я хочу выводить строку сверху, как показано ниже:

required_output = ['test1', 'test2', 'test3']

Удаление '[...;'

Ответы [ 4 ]

0 голосов
/ 20 апреля 2020

Используйте модуль re и функцию findall:

import re

str1 = 'test1[2291];test2[NOT (Ready or Design)];test3[>=1 And NOT = 5]'

re.findall(r'test[0-9]+',str1)

Выход

['test1', 'test2', 'test3']
0 голосов
/ 20 апреля 2020
  • Вы должны сначала разделить входную строку точкой с запятой
  • Затем выполнить l oop и получить индекс квадратной скобки
  • Наконец, от 0-го индекса к квадратному индексу получите индекс данные и добавить его в список вывода
    str1 = 'test1[2291];test2[NOT (Ready or Design)];test3[>=1 And NOT = 5]'
    output =[]

    for data in str1.split(';'):

        # Get index of square bracket
        index_of_square_bracket = data.find('[')

        # Get data from 0th index to square_bracket_index 
        data_without_square_bracket = data[0:index_of_square_bracket]

        output.append(data_without_square_bracket)

    output
0 голосов
/ 20 апреля 2020

Привет, это один из способов сделать это с помощью Regex

import re 
test_string = 'test1[2291];test2[NOT (Ready or Design)];test3[>=1 And NOT = 5]'
res = re.findall(r'\w+', test_string) 
a= []
for word in res:
    if word.startswith("test"):
        a.append(word)
print(a)
0 голосов
/ 20 апреля 2020

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

str1 = 'test1[2291];test2[NOT (Ready or Design)];test3[>=1 And NOT = 5]'
result = []
for value in str1.split(";"):
    for word in value.split("["):
        if word.startswith("test"):
            result.append(word)
print(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...