【问题标题】:TypeError when extracting pincode from resume从简历中提取密码时出现类型错误
【发布时间】:2019-04-16 12:15:19
【问题描述】:

我必须从简历中提取数据。当我尝试从简历中提取密码时,出现以下错误,我无法纠正。

我正在传递一个文件对象并读取open(),然后将其保存到名为_datas_ 的变量中。我正在使用 python 3.6。

下面是我使用的代码:

import re 

def pincode_fetch(pincode):
    pincode = re.search(r"^[1-9]\d{5}$", pincode)
    return pincode

print(pincode_fetch(datas))

预期的输出是这样的:"686533"。 但是我收到了这样的错误:

--> 182     return _compile(pattern, flags).search(string)
    183 
    184 def sub(pattern, repl, string, count=0, flags=0):

TypeError: expected string or bytes-like object

【问题讨论】:

  • 你传递的密码是什么?
  • 'datas' 是我作为 .txt 文件 @PeterWood 传递的简历
  • 'pincode' 是 pincode_fetch() @Jeril 传入的参数
  • re.search 不接受文件对象,您应该按照错误提示传递一个字符串对象。
  • 您能否分享导致此问题的示例密码

标签: python python-3.x regex python-re


【解决方案1】:
 import re 
 pincodesearch = re.compile(r'(\d\d\d\d\d)') 
 mo = pincodesearch.search('Carnival technopark trivandrum 686533') 
 print(mo.groups())[0] 

【讨论】:

  • 这仅适用于 5 位,只需在像 re.compile(r'(\d\d\d\d\d\d)') 中添加一个 \d 即可
  • 它有效,但在简历中使用它时,它需要给定@Yash shukla 的联系人号码的前 5 个数字
  • pincodesearch = re.compile(r'(\d\d\d\d\d\d)') 只需再添加一个 \d ,误以为我只添加了 5(\d) .sorry
  • 我试过了,但没有写简历,因为它需要@Yash Shukla 的前 6 个联系电话号码
  • 如果您需要联系号码,则为 PIN 码而不是联系号码,您必须为联系号码单独添加 10(\d)。
【解决方案2】:

你可以使用 find all,它的工作原理

import re 
def pincode_fetch(pincode):
   pincode = re.findall(r"^[1-9]\d{5}$",pincode)
   return Pincode


 print (pincode_fetch('221507'))


Ans -[221507]

【讨论】:

  • 谢谢它的工作。但是当使用 pincode_fetch("Carnival technopark trivandrum 686533") 时,输出是 none
  • 欢迎,基努!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多