计算用户输入的 txt 文件中特殊字符出现的行数 (Python 2.7)
Counting the number of lines that special characters appear in a txt file from user input (Python 2.7)
使用 Python 2.7,我试图创建一个程序来模拟 Unix 中的 grep 搜索命令。换句话说,我想要求用户输入一个正则表达式,然后计算用户输入的正则表达式在文件中出现的行数。
这是我的代码,我已经知道它完全搞砸了(我已经解决这个问题好几个小时了,我已经束手无策了)。在此代码中,我输入了字符串“^Author”,当它应该从我决定打开的文件("what.txt" 文件)中返回大约 1798 行时返回了 0 行:
import re
hand = open('what.txt')
yo = raw_input("Enter a regular expression: ")
count = 0
for line in hand:
x = re.findall('.*[a-zA-Z]+.*', line)
if yo in line and len(x) > 0:
count += 1
print "what.txt had", count, "lines that matched %s" % yo
我一片空白,无法在 Whosebug 上找到与此问题相关的答案。简而言之,任何帮助都会很棒。
如何使用 re
模块来处理正则表达式?
for line in hand.readlines():
if re.findall(yo,line):
count+=1
在您的代码中,您正在使用正则表达式,就好像它只是一个字符串,但您必须使用与正则表达式一起使用的模块,例如 re
.
在我看来,您应该将收集到 yo
的表达式传递给 re.findall()
。我不太熟悉 grep,但将它传递给 findall 似乎对我有用。
import re
hand = open('what.txt')
yo = raw_input("Enter a regular expression: ")
count = 0
for line in hand:
x = re.findall(yo, line)
if len(x) > 0:
count += 1
print(x)
print "what.txt had", count, "lines that matched %s" % yo
您目前实际上并未在搜索中使用您的正则表达式。
x = re.findall(yo, line)
if x:
count += 1 # multiple non-overlapping occurences on one line
print "what.txt had {0} lines that matched {1}".format(count, yo)
使用 Python 2.7,我试图创建一个程序来模拟 Unix 中的 grep 搜索命令。换句话说,我想要求用户输入一个正则表达式,然后计算用户输入的正则表达式在文件中出现的行数。
这是我的代码,我已经知道它完全搞砸了(我已经解决这个问题好几个小时了,我已经束手无策了)。在此代码中,我输入了字符串“^Author”,当它应该从我决定打开的文件("what.txt" 文件)中返回大约 1798 行时返回了 0 行:
import re
hand = open('what.txt')
yo = raw_input("Enter a regular expression: ")
count = 0
for line in hand:
x = re.findall('.*[a-zA-Z]+.*', line)
if yo in line and len(x) > 0:
count += 1
print "what.txt had", count, "lines that matched %s" % yo
我一片空白,无法在 Whosebug 上找到与此问题相关的答案。简而言之,任何帮助都会很棒。
如何使用 re
模块来处理正则表达式?
for line in hand.readlines():
if re.findall(yo,line):
count+=1
在您的代码中,您正在使用正则表达式,就好像它只是一个字符串,但您必须使用与正则表达式一起使用的模块,例如 re
.
在我看来,您应该将收集到 yo
的表达式传递给 re.findall()
。我不太熟悉 grep,但将它传递给 findall 似乎对我有用。
import re
hand = open('what.txt')
yo = raw_input("Enter a regular expression: ")
count = 0
for line in hand:
x = re.findall(yo, line)
if len(x) > 0:
count += 1
print(x)
print "what.txt had", count, "lines that matched %s" % yo
您目前实际上并未在搜索中使用您的正则表达式。
x = re.findall(yo, line)
if x:
count += 1 # multiple non-overlapping occurences on one line
print "what.txt had {0} lines that matched {1}".format(count, yo)