Как использовать строковую переменную в re.findall - PullRequest
0 голосов
/ 14 февраля 2020

Я использовал Python, чтобы найти слово, начинающееся и заканчивающееся указанными буквами через текстовый файл. Но у меня есть некоторые проблемы с использованием строковой переменной внутри команды re.findall. Не могли бы вы дать мне какое-нибудь предложение?

import re
import sys
f = open(sys.argv[1]+'.txt',"r")
data = f.read()
re.findall(r'\b'+str(sys.argv[2])'\w+', data)

Не могли бы вы расширить этот код, чтобы найти слово, начинающееся и заканчивающееся определенными буквами?

Ответы [ 2 ]

2 голосов
/ 14 февраля 2020

Вам нужна функция re.compile, не знаю, что делает ваш код, но с вашим примером:

import re
import sys
f = open(sys.argv[1]+'.txt',"r")
data = f.read()
regex = re.compile(r"\b" + str(sys.argv[2]) + r"\w+")
re.findall(regex, data)

Если вы хотите, чтобы слова начинались и заканчивались указанными буквами, вы могли бы использовать что-то вроде:

import re
import sys
f = open(sys.argv[1]+'.txt',"r")
data = f.read()
                   # starting with 'a' and ending with 'w'
regex = re.compile("^a" + str(sys.argv[2]) + "w$")
re.findall(regex, data)
0 голосов
/ 14 февраля 2020
import re
import sys

thefile = open(sys.argv[1]+".txt", "r")

for line in thefile:
    if re.match(sys.argv[2]+"(.*)"+sys.argv[3]+"(.*)(.*)", line):
        print line

argv [1] - это имя файла

argv [2] - начальная буква слова,

argv [3] - конечная буква слова,

вы можете искать слово, используя начальную и конечную букву слов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...