Недавно я обнаружил, что использование strtolower()
может вызвать проблемы, когда данные усекаются после специального символа.
Решение заключалось в использовании
mb_strtolower($string, 'UTF-8');
mb_ использует MultiByte. Он поддерживает больше символов, но в целом немного медленнее.
blockquote>
Это должно решить вашу проблему, предполагая, что у вас есть правильное регулярное выражение в переменной 'phrase'
import re
# compile regex
regex = re.compile('[0-9]+')
# open the files
with open('Corpus.txt','r') as inputFile:
with open('OutputLineNumbers', 'w') as outputLineNumbers:
# loop through each line in corpus
for line_i, line in enumerate(inputFile, 1):
# check if we have a regex match
if regex.search( line ):
# if so, write it the output file
outputLineNumbers.write( "%d\n" % line_i )
вы можете сделать это напрямую с bash, если ваше регулярное выражение является дружественным grep. покажите номера строк, используя «-n»
, например:
grep -n "[1-9][0-9]" tags.txt
выведет совпадающие строки с номерами строк, включенными сначала
2569:vote2012
2570:30
2574:118
2576:7248
2578:2293
2580:9594
2582:577