Py学习  »  Python

使用python&nlp,如何从包含大量自由文本的excel列中提取特定文本字符串和字符串前面的对应数字?

bpfreefly • 4 年前 • 557 次点击  

我对python比较陌生,对nlp(和nltk)也很陌生,我在网上搜索了一些指导,但没有找到完整的解决方案。不幸的是,我一直在玩的稀疏代码是在另一个网络上,但我包括一个示例电子表格。我希望得到建议的简单英语步骤(比下面更详细),以便我可以首先尝试用python 3编写它。除非你能更容易地帮助编写脚本…这样的话,谢谢。

问题:一个健壮的电子表格中有几列是非常非结构化的,其中有500-5000个英文字符可以讲述一个故事。我需要从本质上通过提取可量化的数据使它更结构化一些。我需要:

1)在用户提供的非结构化自由文本列中搜索字符串(用户输入列标题)(我认为我做得对)

2)在Excel中将该字符串设为新的列标题(我认为我做得对)

3)抓住绳子前面的数字(这就是我卡住的地方。正如你在表格中看到的,有时数字和文本之间没有空格,当然,有时拼写错误)

4)将该数字放在同一行的新列中(尚未到达此步骤)

我将不得不为多个关键字重复这样做,但我相信,我可以通过循环或其他方式来解决这一部分。非常感谢您的时间和专业知识…

Example of spreadsheet with unstructured free text

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46592
 
557 次点击  
文章 [ 2 ]  |  最新文章 4 年前
bpfreefly
Reply   •   1 楼
bpfreefly    5 年前

我想我找到了我要找的东西。 https://community.esri.com/thread/86096 有3或4个脚本,似乎可以做到这一点。谢谢您。。!

David Hynes
Reply   •   2 楼
David Hynes    5 年前

如果我理解正确,首先我们需要从文本字符串中获取数字。

cell_val = sheet1wb1.cell(row=rowNum,column=4).value

这将创建一个包含字符串中每个数字的列表

new_ = [int(s) for s in cell_val.split() if s.isdigit()]

print(new_)

您可以使用列表将值分配给列。 然后定义列表中第1个数字到第5列的值

sheet1wb1.cell(row=rowNum, column=5).value = str(new_[1])