一种删除所有出现在字符串中的单词的方法?

时间:2019-01-15 03:39:45

标签: python python-3.x string

我正试图找到一种方法来删除文本文件中所有对引用的提及。

我还没有尝试太多,因为我是Python的新手,但我认为这是Python可以做的。

def remove_bracketed_words(text_from_file: string) -> string:
    """Remove all occurrences of words with brackets surrounding them, 
    including the brackets.

    >>> remove_bracketed_words("nonsense (nonsense, 2015)")
    "nonsense "
    >>> remove_bracketed_words("qwerty (qwerty) dkjah (Smith, 2018)")
    "qwerty  dkjah "
    """
    with open('random_text.txt') as file:
        wholefile = f.read()
        for '(' in 

我不知道从这里去哪里,或者我做的是否正确。任何建议都会有所帮助!

2 个答案:

答案 0 :(得分:1)

尝试re

>>> import re
>>> re.sub(r'\(.*?\)', '', 'nonsense (nonsense, 2015)')
'nonsense '
>>> re.sub(r'\(.*?\)', '', 'qwerty (qwerty) dkjah (Smith, 2018)')
'qwerty  dkjah '

import re
def remove_bracketed_words(text_from_file: string) -> string:
    """Remove all occurrences of words with brackets surrounding them, 
    including the brackets.

    >>> remove_bracketed_words("nonsense (nonsense, 2015)")
    "nonsense "
    >>> remove_bracketed_words("qwerty (qwerty) dkjah (Smith, 2018)")
    "qwerty  dkjah "
    """
    with open('random_text.txt', 'r') as file:
       wholefile = file.read()
    # Be care for use 'w', it will delete raw data.
    whth open('random_text.txt', 'w') as file:
        file.write(re.sub(r'\(.*?\)', '', wholefile))

答案 1 :(得分:1)

使用文本编辑程序来处理正则表达式(如Notepad ++),比为这一任务学习Python(读取文件,更正诸如for '(' in...之类的基本错误)要容易得多。您甚至可以使用在线可用的工具,例如RegExr(正则表达式测试器)。在RegExr中,将适当的表达式写入“表达式”字段,然后将文本粘贴到“文本”字段中。然后,在文本下方的“工具”区域中,选择“替换”选项并删除占位符表达式。您清理的文本将显示在此处。

您正在寻找一个空格,然后是一个字面的右括号,然后是一些字符,然后是一个逗号,然后是一年(让我们叫3或4位数字),然后是一个字面的右括号,所以我建议下面的表达式:

 \(.*?, \d{3,4}\)

这将保留非引用括号内的文本,并在引用前删除前导空格。