我想从较大的文本中提取信息(文本)的某些特定部分,然后根据需要的格式将其导出。下面是一个示例
#Input
text={ Line 1: sergefdsgwerh Date is 10,29,2017
Line 2aergsdfgsdfgasfdhgfasd
Line 3: company Microsoft}
# Output
exported_text={ D 10 29 2017 C Microsoft}
x = []
with open("myfile.txt") as file:
for l in file:
x.append(l.strip())
X=[gives my lines as list item]
答案 0 :(得分:0)
我会考虑三种不同的方式来实现您要执行的操作,具体取决于您的输入内容以及是否要在多段文本上进行输入。
对于以下示例,假设您的输入是这样的:
text = "Line 1: sergefdsgwerh Date is 10,29,2017\nLine 2aergsdfgsdfgasfdhgfasd\nLine 3: company Microsoft"
首先,如果您只有一段文字,或者您输入的内容始终采用完全相同的格式,则可以使用以下基本字符串操作轻松检索需要的信息部分Python。
要编写一个有效的示例,您可以使用以下方法获得所需的内容:
date = text.replace("\n", " ").split(" ")[5].replace(",", " ")
company = text.replace("\n", " ").split(" ")[-1]
output_text = "D "+date+" C "+company
print(output_text)
# > D 10 29 2017 C Microsoft
请注意,我们在这里使用了许多函数(有很多资源只是为了更好地了解这些函数,如果您不熟悉这些字符串操作,我建议您研究一下它们):
text.replace("\n", " ")
在整个字符串中用空格:"\n"
替换跳过行字符串:" "
字符串text.split(" ")
将字符串拆分为一个列表,每当遇到空格" "
时都会进行拆分第二,如果您输入的格式在每次输入之间仅相差很小(例如,公司名称始终写在“公司”一词之后),可能的事情是使用regex
库。如果要隔离公司名称,请使用以下实例。有多种方法可以使用regex
在这里做您想做的事情,所以我将不做进一步的详细介绍:
company = re.search(r'company (\S+)', text)
print(company.group(1))
# > Microsoft
最后,如果您的输入不断变化,如果您是Python的新手,那么您想要做的事情要复杂得多,并且很难解释。但是,值得注意的是,仍然可以使用命名实体识别来实现,例如,可以使用SpaCy(here)库来实现。
也就是说,鉴于您输入的内容看起来像,使用此类库中的标准模型不会有多大帮助(因为它们是在有意义的文本的实际实例上进行训练的),因此您需要进行训练适合您特定用途的模型...