提取部分文本并将其格式化为 Python?
Extract some part of text and format it desirably in Python?
我想从较大的文本中提取信息(文本)的某些特定部分,并根据我想要的格式将其导出。下面是一个例子
#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]
我会想到三种不同的方法来实现你想要做的事情,这取决于你的输入是什么样子的,以及你是否想对多段文本进行操作。
对于以下示例,假设您的输入是这样的:
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", " ")
用 space:" "
替换跳行字符串:"\n"
整个字符串
text.split(" ")
将字符串拆分为一个列表,每次拆分在遇到 space:" "
时完成
- 等...
其次,如果您的输入格式在每个输入之间仅略有不同(例如,公司名称始终写在 "company"), 一种可能的方法是使用 regex
库。如果你想隔离公司名称,这是一个例子。有很多方法可以在这里使用 regex
做你想做的事,所以我不会比这个更详细:
company = re.search(r'company (\S+)', text)
print(company.group(1))
# > Microsoft
最后,如果您的输入不断变化,如果您是 Python 的新手,您想做的事情会更复杂,也更难解释。然而,值得注意的是,它仍然可以使用命名实体识别来实现,例如,可以使用库 SpaCy (here).
就是说,考虑到您的输入看起来像什么,使用此类库中的标准模型对您帮助不大(因为它们是在有意义的文本的真实实例上训练的),并且您需要训练适合您特定用途的模型...
我想从较大的文本中提取信息(文本)的某些特定部分,并根据我想要的格式将其导出。下面是一个例子
#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]
我会想到三种不同的方法来实现你想要做的事情,这取决于你的输入是什么样子的,以及你是否想对多段文本进行操作。
对于以下示例,假设您的输入是这样的:
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", " ")
用 space:" "
替换跳行字符串:"\n"
整个字符串text.split(" ")
将字符串拆分为一个列表,每次拆分在遇到 space:" "
时完成- 等...
其次,如果您的输入格式在每个输入之间仅略有不同(例如,公司名称始终写在 "company"), 一种可能的方法是使用 regex
库。如果你想隔离公司名称,这是一个例子。有很多方法可以在这里使用 regex
做你想做的事,所以我不会比这个更详细:
company = re.search(r'company (\S+)', text)
print(company.group(1))
# > Microsoft
最后,如果您的输入不断变化,如果您是 Python 的新手,您想做的事情会更复杂,也更难解释。然而,值得注意的是,它仍然可以使用命名实体识别来实现,例如,可以使用库 SpaCy (here).
就是说,考虑到您的输入看起来像什么,使用此类库中的标准模型对您帮助不大(因为它们是在有意义的文本的真实实例上训练的),并且您需要训练适合您特定用途的模型...