Циклические элементы списка для замены строк в каждом элементе - PullRequest
0 голосов
/ 28 января 2019

У меня есть список университетов:

['1 1  LOMONOSOV MOSCOW STATE UNIVERSITY  XL FO VH  5  A  100 100 100  87.1            52.4 52  99.3 87  100 100', '', '', '', ''],
['2 2 NOVOSIBIRSK STATE UNIVERSITY                                                 M CO VH 98.1 96.5 88.9 98.8 59.7 38.1 69.8 92.1 99.4 96.7', '', '', '', ''],
...

Я хотел бы удалить лишнюю информацию (nrs, пробелы, ...) и просто сохранить название университета.

Для этогоЯ пытаюсь перебрать свой список, заменяя числа и другие нежелательные символы на "".

Пока у меня есть:

for i in range(len(flat_data2)):

    mainString = flat_data2[i]

    def replaceMultiple(mainString, unwanted, input_char):
    # Iterate over the strings to be replaced
        for elem in unwanted :
        # Check if string is in the main string
            if elem in mainString :
            # Replace the string
                mainString = mainString.replace(elem, input_char)

        return  mainString
replaceMultiple(mainString, unwanted, input_char)

К сожалению, я вернул только последний элемент моего списка(хотя ненужные символы удаляются ...).

Чего мне не хватает?Или у вас есть лучшее решение?Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Ваша проблема связана с тем, что вы продолжаете определять функцию каждую итерацию цикла, но не запускаете ее и не сохраняете ее вывод.Минимальные изменения, чтобы заставить это работать:

def replaceMultiple(s, unwanted, input_char):
    # Iterate over the strings to be replaced
    for elem in unwanted:
        # Replace the string, does not do anything if `elem` not in `s`
        s = s.replace(elem, input_char)
    return s

flat_data2_new = [replaceMultiple(x) for x in flat_data2]
0 голосов
/ 28 января 2019

Вы можете попробовать:

input_char = ""
conv = ''.maketrans({c: input_char for c in unwanted})

l = list()   # if you want a list of all your strings
for i in range(len(flat_data2)):
    mainString = flat_data2[i].translate(conv)
    l.append(mainString)
...