谁能提供给我正则表达式代码,以便仅在文本文件中打印数据的第一行?我正在使用间谍
我尝试了可能的解决方案,但它在每行中打印我的所有数据...最后一个帮助了我,但选择了两行。我只希望文本文件的第一行直到遇到换行符或文本从下一行开始为止。
import re
def getname(s):
nameregex=re.findall(r'^.*?[\.!\?](?:\s|$)',line)
if len(nameregex)!=0:
print(nameregex)
s = open('yesno.txt')
for line in s:
getname(s)
在输出中,我得到前两行。 基本上,我只尝试打印大多数在第一行中的公司名称。
答案 0 :(得分:1)
使用read()
将文件读入变量,然后使用re.search
进行匹配:
import re
def getname(s):
nameregex=re.search(r'^.*?[.!?](?!\S)', s) # Run search with regex
if nameregex: # If there is a match
print(nameregex.group()) # Get Group 0 - whole match - value
s = open('yesno.txt', 'r') # Open file handle to read it
contents = s.read() # Get all file contents
getname(contents) # Run the getname method with the contents
对正则表达式进行了一些修改,以避免最后出现空格。查看详细信息:
^
-字符串的开头.*?
-除换行符以外的任何0个或多个字符,应尽可能少[.!?]
-.
,!
或?
字符(?!\S)
-此处必须有空格或字符串结尾。请参见regex graph: