Во-первых, важно понимать, что кортежи неизменны, и вы не должны пытаться изменять их содержимое.Рекомендуется преобразовать x
в подобный dict, чтобы вы могли изменять значения dict, потому что в Python эти переменные являются изменяемыми.
In [36]: y = dict(x)
In [37]: y
Out[37]: {'We': 'PRP', "'re": 'VBP', 'really': 'RB$', 'sorry': 'JJ'}
Теперь вы можете хранить все символы в переменнойи искать их в диктанте y
.Когда символ найден, просто замените его на ''
нулевое значение.
In [38]: symbols = '$:;?'
In [39]: for k,v in y.items():
...: for symbol in symbols:
...: if symbol in v:
...: v = v.translate({ord(symbol):''})
...: y[k] = v
In [40]: y
Out[40]: {'We': 'PRP', "'re": 'VBP', 'really': 'RB', 'sorry': 'JJ'}
Давайте добавим еще один элемент к y со специальным символом, определенным в symbols
:
In [41]: y['test'] = 'ZZ;'
In [42]: y
Out[42]: {'We': 'PRP', "'re": 'VBP', 'really': 'RB', 'sorry': 'JJ', 'test': 'ZZ;'}
Итак, если я заключу вышеприведенный код цикла в функцию modify_dict
и вызову, значение элемента test
также будет изменено:
In [45]: modify_dict()
In [46]: y
Out[46]: {'We': 'PRP', "'re": 'VBP', 'really': 'RB', 'sorry': 'JJ', 'test': 'ZZ'}
Чтобы преобразовать его обратно в списоккортежей:
In [55]: z = [(k,v) for k,v in y.items()]
In [56]: z
Out[56]:
[('We', 'PRP'),
("'re", 'VBP'),
('really', 'RB'),
('sorry', 'JJ'),
('test', 'ZZ')]