Как устранить все круглые скобки в текстовых файлах?

У меня есть текстовый файл, один столбец, взятый из Excel, следующего типа:

АМАНДА (ГРОМКОГОВОРЯЩИЙ) ДЖЕФФ Стивен (УМНОГОДНО) АМАНДА ДОК БРИАН ГРИН

В качестве вывода я хочу:

АМАНДА ДЖЕФФ СТИВЕН АМАНДА ДОК БРИАН ГРИН

Я попытался с циклом для всех столбцов, а затем:

            if (str[i] == '('):  
                return str.split('(')

но это явно не работает. У вас есть какое-нибудь возможное решение? Затем мне потребуется выходной файл в качестве моего исходного текста, так что с каждым именем для каждой строки в одном столбце.

Спасибо всем! (Я использую PyCharm 3.2)

2 ответа

Решение

Я бы использовал регулярные выражения в этой ситуации. \w заменит буквы, * выберет 0 или больше. Затем мы проверяем, что между скобками.

import re
fi = "AMANDA (LOUDLY) JEFF STEVEN (TEASINGLY) AMANDA"
with open("mytext.txt","r") as fi, open("out.txt", "w") as fo:
    for line in fi:
        fo.write(re.sub("\(.*?\)", "", line))

Вы можете разбить строку на список, используя регулярное выражение, которое соответствует всему, что в скобках, или полное слово, удалить все элементы из списка, которые содержат скобки, а затем снова присоединить список к строке. Преимущество состоит в том, что в результирующей строке не будет двойных пробелов, где слово в параграфах было удалено.

import re
text = "AMANDA (LOUDLY SPEAKING) JEFF STEVEN (TEASINGLY) AMANDA DOC BRIAN GREEN"
words = re.findall("\(.*?\)|[^\s]+",text)
print " ".join([x for x in words if "(" not in x])
Другие вопросы по тегам