我正试图找到一种方法来删除文本文件中所有对引用的提及。
我还没有尝试太多,因为我是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
我不知道从这里去哪里,或者我做的是否正确。任何建议都会有所帮助!
答案 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}\)
这将保留非引用括号内的文本,并在引用前删除前导空格。