【问题标题】:Find a String starting from a particular string in text files and classify从文本文件中的特定字符串开始查找字符串并进行分类
【发布时间】:2019-04-16 07:36:25
【问题描述】:

我正在做作业,我读过类似的主题,在这里发现了一个非常有趣的主题:Find string between two substrings

我的目标是使用 python 搜索我在文本文件中搜索的 3 个特定模式,我需要在未分类的文本文件中执行搜索,我需要:

1) 从关键字“更多信息”开始搜索(在此之前绕过信息)

2) 根据以下条件对文档进行分类: A1) 字符串:'big home' 和他的价格 A2) 字符串 : 'big home' 未找到价格 B1) 字符串:'small home' 和他的价格 B2) 字符串 : 'small home' 未找到价格 C1) 字符串:'big home' AND 'small home' 及其价格 C2) 字符串:'big home' AND 'small home' 他们的价格缺失 D) 没有找到字符串(大房子或小房子)

对于 A、B、C,找到价格并打印 = 'Big home price 50USD',如果没有找到价格,请提及。

我正在使用 python 进行文本研究,它返回找到的关键字的分类,我需要根据上述模式 A、B、C 和 D 对文档(文本文件)进行分类

data_train['classi'] = data_train['text'].apply(lambda x: len([x for x in x if x.startswith('classi')]))
data_train[['text','classi']].head()

这是输出:

text    classi
0   [big home, forrest, suburb, more info,          0
1   [town, pool, more info,                         0
2   [small home,more info,  forrest, suburb         1
3   [big home, more info,  forrest, price 50        1
4   [big home, forrest,  more info,  city           0

我希望: 1)从关键字“更多信息”开始搜索 2)将我搜索的文本文档分类为A,B,C,D(如果没有价格提及,则获取带有价格的字符串。

高度赞赏任何支持!

编辑:

【问题讨论】:

  • 分享示例文本文件
  • 嗨,谢谢连接,当然,这里是例子,1.txt(仅限大房子价格):pastebin.com/YHfWwYG7 List created from 1.txt(我使用列表,因为我过滤了文本文件并去除空白和其他噪音):pastebin.com/ziyGnBgZ 2.txt(小型住宅和大型住宅的价格)pastebin.com/hLD9RJM1 以及从 2.txt(小型住宅和大型住宅的价格)创建的 lsit:@ 987654326@
  • 编辑:从 2.txt 创建的列表:pastebin.com/fMaBYjiJ
  • 编辑:重要信息:有时有关“大房子”或“小房子”的信息位于文件顶部或中间,而不是示例文件中显示的文本“项目介绍” ....这可能会使整个事情复杂化...
  • 有一个可以使用的代码示例(在列表中查找多个元素)... : find = lambda searchList, elem: [[i for i, x in enumerate(searchList) if x == e] for e in elem] 示例:find([1,4,1,4,6,5,5,5,4,2,3],[1,3,5]) 将返回:[ [0, 2], [10], [5, 6, 7]] 也许我的项目有解决方案?

标签: python string search text nltk


【解决方案1】:

我会做类似的事情:

from pathlib import Path
for file in Path("my_folder").glob("*.txt"):
    with file.open('r') as f:
        more_info_flag = False
        for line in f:
            if not more_info_flag:
                if "more info" in line:
                    more_info_flag = True
                else:
                    continue
            if "big_home" in line:
                if "price is" in line:
                    price = int(line.split("price is")[1].split(" ")[0])
                else:
                    price = None
                do_something(price)

我认为这适用于您发布的文件,如果其他格式不同,则需要进行调整...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 2013-08-08
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多