раздеть и разделить, как раздеть список - PullRequest
0 голосов
/ 29 мая 2018

мой код:

readfile = open("{}".format(file), "r")

lines = readfile.read().lower().split()

elements = """,.:;|!@#$%^&*"\()`_+=[]{}<>?/~"""
for char in elements:
    lines = lines.replace(char, '')

это работает и удаляет специальные символы.но мне нужна помощь с чередованием "-" и "'"

, так что, например, "saftey-dance" будет хорошо, но не "-hi-", но "я буду" хорошо, но не "привет"

мне нужно удалить только начало и конец

это не строка, это список.

как мне это сделать?

Ответы [ 2 ]

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

Во-первых, использование str.replace в цикле неэффективно.Поскольку строки являются неизменяемыми, вы должны создавать нужную строку на каждой из ваших итераций.Вы можете использовать str.translate для удаления нежелательных символов за один проход.

Что касается удаления тире, только если это не граничный символ, это именно то, что str.strip делает.

Также кажется, что символы, которые вы хотите удалить, соответствуют string.punctuation, с особым регистром для '-'.

from string import punctuation

def remove_special_character(s):
    transltation = str.maketrans('', '', punctuation.replace('-', ''))
    return ' '.join([w.strip('-') for w in s.split()]).translate(transltation)

polluted_string = '-This $string contain%s ill-desired characters!'
clean_string = remove_special_character(polluted_string)

print(clean_string)

# prints: 'This string contains ill-desired characters'

Если вы хотите применить это к нескольким строкам, вы можете сделать это с помощьюсписок-понимание.

lines = [remove_special_character(line) for line in lines]

Наконец, чтобы прочитать файл, вы должны использовать оператор with.

with open(file, "r") as f
    lines = [remove_special_character(line) for line in f]
0 голосов
/ 29 мая 2018

Может быть, вы можете попробовать string.punctuation и strip:

import string

my_string_list = ["-hello-", "safety-dance", "'hi", "I'll", "-hello"]

result = [item.strip(string.punctuation) for item in my_string_list]
print(result)

Результат:

['hello', 'safety-dance', 'hi', "I'll", 'hello']
...