Я использую python и регулярное выражение. Я прочитал файл с помощью python и хочу удалить некоторые слова/символы из файла. Я использую re.sub()
. Вот пример того, как выглядят строки:
Proxy BR 1.05s [HTTPS] 200.203.144.2:50262
Мне удалось убрать слова и все спецсимволы, оставив, например,
1.20 187.94.217.693128
но я не могу избавиться от первых 4 символов. которые 1.05
.
Это мое регулярное выражение:
pattern = "[a-zA-Z\[\],:<>]"
Как убрать первые 4 символа?
хорошо, я удалил буквы, как вы можете видеть в примере, который я показал, но я застрял с: 1.20 187.94.217.693128 после того, как я удалил буквы и специальные символы
что, если для запуска требуется 12,05 с?
Хорошо, кажется, я забыл упомянуть, что я не пытаюсь ориентироваться только на эту конкретную строку, файл, который я читаю, содержит несколько строк таких строк.
Тогда позвольте мне уточнить. Единственное, что вы хотите сделать прямо сейчас, это удалить первые четыре символа из каждой строки в файле?
Итак, что я пытаюсь сделать, так это удалить из файла все, кроме 200.203.144.2:50262 (который является прокси). Что я сделал до сих пор, так это удалил буквы и специальные символы, но у меня осталось время (1,05 с) и прокси. Это более понятно?
Это. На самом деле это больше похоже на проблему XY, потому что, как упомянул @ Matthew0898, удаление первых четырех символов не всегда даст вам то, что вы хотите.
Время является частью строки, оно говорит, сколько времени требуется прокси для ответа.
Да, а что, если время больше 10 секунд?
Пожалуйста, опубликуйте свой код или, скорее, его Минимальный, полный и проверяемый пример (MVCE).
@МатьеК. Вот мой код: imgur.com/2NQoE4c
@GabrielMatei размещает ваш код в виде изображения — не самый лучший способ для Stack Overflow. Я посмотрел ваш код, но нам нужно больше примеров из входного файла - myproxy.txt. В комментариях к вашему вопросу я отметил, что вам нужна только часть строки ip_address:port_number. Это правильно?
@Lifeiscomplex да, это правильно. Вот как выглядит ввод из myproxy.txt: <Прокси US 0.16s [http: High, HTTPS] 104.248.168.64:3128> <Proxy US 0.20s [http: High, HTTPS] 54.81.69.91:3128> <Proxy LT 0,77 с [http: высокий, HTTPS] 78.60.130.181:30664> <Proxy AT 0,85 с [http: высокий] 80.120.86.242:46771> <Proxy RU 0,51 с [http: высокий] 109.74.135.246:45769> <Proxy CA 1.19s [http: High, HTTPS] 198.50.172.161:1080> <Proxy IN 1.26s [http: High] 103.250.166.12:47031> <Proxy TR 0.79s [http: Transparent, HTTPS] 88.255.101.244:8080>
@GabrielMatei Я обновил свой ответ, чтобы использовать myproxy.txt. Дайте мне знать, если есть какие-либо проблемы.
Используйте якорь (^
представляет начало строки, а .{4}
любые четыре символа после него):
import re
re.sub('^.{4}', '', '1.20 187.94.217.693128')
Выход:
' 187.94.217.693128'
Если вы запустите код точно так, как он есть, он будет работать с заданной строкой.
Как я могу заставить его работать с каждой строкой в файле, потому что в файле, который я читаю, больше таких строк.
@GabrielMatei Тогда ваш вопрос должен быть «Как мне получить IP: порт из каждой строки в этом файле» с примером файла и вашего текущего кода.
@Mark Tolonen Да, извините за неправильную формулировку вопроса, но я думал, что был близок к тому, чтобы сделать это сам, и мне нужно было только удалить время, потому что мне удалось удалить буквы и специальные символы самостоятельно.
Приведенный ниже код ищет только IPv4-адрес и номер порта во входной строке. Формат комбинации IP-адреса и номера порта:
digit{1,3}.digit{1,3}.digit{1,3}.digit{1,3}:digit{1,5}
import re
with open('myproxy.txt', 'r') as input:
lines = input.readlines()
pattern_to_find = re.compile(r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5})')
for line in lines:
find_pattern = re.search(pattern_to_find, line)
if find_pattern:
print(find_pattern.group())
# outputs
104.248.168.64:3128
54.81.69.91:3128
78.60.130.181:30664
80.120.86.242:46771
109.74.135.246:45769
198.50.172.161:1080
103.250.166.12:47031
88.255.101.244:8080
Разве первые 4 символа не
'Prox'
?