Совпадение с первыми 4 символами в строке

Я использую 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 символа?

Разве первые 4 символа не 'Prox'?

gmds 07.04.2019 23:57

хорошо, я удалил буквы, как вы можете видеть в примере, который я показал, но я застрял с: 1.20 187.94.217.693128 после того, как я удалил буквы и специальные символы

Gabriel Matei 08.04.2019 00:00
s.rsplit()[-1]? См. ideone.com/WSejdv
Wiktor Stribiżew 08.04.2019 00:01

что, если для запуска требуется 12,05 с?

Matthew0898 08.04.2019 00:03

Хорошо, кажется, я забыл упомянуть, что я не пытаюсь ориентироваться только на эту конкретную строку, файл, который я читаю, содержит несколько строк таких строк.

Gabriel Matei 08.04.2019 00:12

Тогда позвольте мне уточнить. Единственное, что вы хотите сделать прямо сейчас, это удалить первые четыре символа из каждой строки в файле?

gmds 08.04.2019 00:17

Итак, что я пытаюсь сделать, так это удалить из файла все, кроме 200.203.144.2:50262 (который является прокси). Что я сделал до сих пор, так это удалил буквы и специальные символы, но у меня осталось время (1,05 с) и прокси. Это более понятно?

Gabriel Matei 08.04.2019 00:21

Это. На самом деле это больше похоже на проблему XY, потому что, как упомянул @ Matthew0898, удаление первых четырех символов не всегда даст вам то, что вы хотите.

gmds 08.04.2019 00:27

Время является частью строки, оно говорит, сколько времени требуется прокси для ответа.

Gabriel Matei 08.04.2019 00:31

Да, а что, если время больше 10 секунд?

gmds 08.04.2019 01:12

Пожалуйста, опубликуйте свой код или, скорее, его Минимальный, полный и проверяемый пример (MVCE).

Mathieu K. 08.04.2019 01:53

@МатьеК. Вот мой код: imgur.com/2NQoE4c

Gabriel Matei 08.04.2019 11:58

@GabrielMatei размещает ваш код в виде изображения — не самый лучший способ для Stack Overflow. Я посмотрел ваш код, но нам нужно больше примеров из входного файла - myproxy.txt. В комментариях к вашему вопросу я отметил, что вам нужна только часть строки ip_address:port_number. Это правильно?

Life is complex 08.04.2019 17:44

@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>

Gabriel Matei 08.04.2019 18:23

@GabrielMatei Я обновил свой ответ, чтобы использовать myproxy.txt. Дайте мне знать, если есть какие-либо проблемы.

Life is complex 08.04.2019 18:40
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
15
1 827
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Используйте якорь (^ представляет начало строки, а .{4} любые четыре символа после него):

import re

re.sub('^.{4}', '', '1.20 187.94.217.693128')

Выход:

' 187.94.217.693128'

Если вы запустите код точно так, как он есть, он будет работать с заданной строкой.

gmds 08.04.2019 00:12

Как я могу заставить его работать с каждой строкой в ​​файле, потому что в файле, который я читаю, больше таких строк.

Gabriel Matei 08.04.2019 00:13

@GabrielMatei Тогда ваш вопрос должен быть «Как мне получить IP: порт из каждой строки в этом файле» с примером файла и вашего текущего кода.

Mark Tolonen 08.04.2019 02:10

@Mark Tolonen Да, извините за неправильную формулировку вопроса, но я думал, что был близок к тому, чтобы сделать это сам, и мне нужно было только удалить время, потому что мне удалось удалить буквы и специальные символы самостоятельно.

Gabriel Matei 08.04.2019 11:41
Ответ принят как подходящий

Приведенный ниже код ищет только 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

Другие вопросы по теме