Python:错误:TypeError:findall()缺少1个必需的位置参数:“字符串”

时间:2019-02-02 18:52:53

标签: regex python-3.x

我想擦洗特定参数的文本文档。尝试过x=...行的不同迭代,但是该程序无法读取所有行。

import re
#import csv

text = open(r'C:\Users\Vincent\Documents\python\theSortingHat\100000DirtyNames.txt') #open text file
for line in text: #iterate through every line
    #return list of names in that line
    x = re.findall ('^([a-zA-Z]-?$')
    #if an actual name is found
    if x != 0:
        print(x)

我收到:

  

错误:类型错误:的findall()缺少1所需位置参数:   '字符串'

1 个答案:

答案 0 :(得分:1)

您需要查找字符串中的内容。问题在于您只给re.findall一个参数,还应该给line作为参数。 也有一些问题,你的正则表达式,你没关你的组(即()),它由一个无效的正则表达式。

这是您想要的答案:

import re

text = open(r'C:\Users\Vincent\Documents\python\theSortingHat\100000DirtyNames.txt') #open text file
for line in text: #iterate through every line
    #return list of names in that line
    x = re.findall('^([a-zA-Z])-?$', line)
    #if an actual name is found
    if x != 0:
        print(x)

关于正则表达式,听起来像post might help
TL; DR:
您可以使用此正则表达式:

^[A-Z]'?[- a-zA-Z]+$