【问题标题】:find a word by taking reference of multiple variables in python通过引用python中的多个变量来查找单词
【发布时间】:2019-06-19 04:26:25
【问题描述】:

我想通过使用多个关键字从文本文件中查找一个单词,因为我已经为一个单词编码,如下所述:现在我有多个关键字而不是一个单词来搜索文本文件。

假设我的文本文件看起来像

Today's date 25-01-2019
My name is Pratik
My DOB: 1-1-1990
My Date of promotion: 1-1-2019
import re
with open('abc.txt', encoding= 'utf-8') as abc3:
    for line in abc3: 
        match= re.search(r'date: (\S+)', line)
        if match:
           result = match.group(1)
           print('DATE: '.format(result))

我有多个变量,例如“日期:”、“促销日期”、“出生日期:”、“出生日期:”,而不是搜索代码行中的一个变量(“日期:(\S+)”

如果上述任何一个或多个变量匹配到文本文件中,我该如何编码。

Expected result
date 25-01-2019
DOB: 1-1-1990
Date of promotion: 1-1-2019

【问题讨论】:

  • 每个条目(例如DATE)是否只出现一次?如果不是,单个块是否被分隔?条目的顺序是固定的吗?重要吗?假设输入在 fork ENTRY_NAME: TEXTENTRY_NAME 中不能包含 : 是否安全?你只想打印吗?或者实际上创建一些更永久的结构以进行进一步处理?
  • @ondrej:感谢您的回复!!日期、促销日期、DOB 可以使用两次,但如果任何值匹配,则整个文本文件中的值相同。我不想按顺序,从整个列表中,如果任何值匹配,它应该被打印。对于这个值,我想把它放到一个表中作为结果存储。

标签: python file search text nlp


【解决方案1】:

在这种情况下,首先要做的是处理大小写。打开文件后,将字符串转换为小写。在这种特定情况下,这应该很好。

re.findall(r"((?:(?:(?:d|D)ate)|DOB).*)",x)

其中 x 是您的输入字符串。 我在没有调整大小写的情况下尝试了它,这应该给出答案

['date 25-01-2019', 'DOB: 1-1-1990', 'Date of promotion: 1-1-2019']

【讨论】:

  • 感谢您的回复。我尝试了以下代码.. ```` with open('.txt', encoding="utf-8") as abc3 import re re.findall(r"((?:(?:(?:d| D)ate)DOB).*)", abc3)```` 但它显示错误“预期的字符串或类似字节的对象”
  • 是的,您应该将其转换为字符串。执行 abc3.read() 后,通过写入 type(abc3) 检查您的类型是否为 str,如果不是则使用 abc3=str(abc3) 进行转换。
猜你喜欢
  • 1970-01-01
  • 2019-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-11
  • 1970-01-01
  • 2020-06-05
  • 1970-01-01
相关资源
最近更新 更多