Python Автоматический текст после математики / удаления текста?

#python #python-3.x

#питон #python-3.x

Вопрос:

Возможно ли с помощью python, что, например, если у меня есть .txt с этим:

 1/50 blah blah blah
6/36 blah blah blah
 

или

 text1/text2 blah blah blah
text3/text4 blah blah blah
 

чтобы получить это:

 1/50
6/36
 

или

 text1/text2
text3/text4? 
 

Спасибо!

Комментарии:

1. Сильно зависит от самого текста. Добавьте образец текста.

2.например text1/text2 text3/text4 hello/pls can/python do/that , а затем всегда слова за ним, и я хочу удалить слова за ним here:throwbin.io/U62KjKt

3. Вы пытаетесь выводить только числовые данные?

4. посмотрите здесь throwbin.io/U62KjKt я хочу вывести эти вещи в `

5. Что вы пробовали до сих пор?

Ответ №1:

Для примеров, которые вы опубликовали, вы можете просто разделить строку и взять первый элемент:

 >>> line = '1/50 blah blah blah'
>>> line.split(maxsplit=1)[0]
'1/50'
 

Применение этого к файлу:

 with open('input.txt') as f:
    for line in f:
        prefix = line.split(maxsplit=1)[0]
        print(prefix)
        # do whatever with the extracted field.
 

Существуют и другие способы обработки файла, например, с помощью csv модуля для анализа его как файла CSV. Зависит от ваших требований.

Комментарии:

1. Немного более эффективный метод для этого варианта использования — для нас partition вместо split

2. @Tomerikoo: только если разделитель полей является фиксированным пробелом, например, пробелом. Из вопроса неясно, поэтому split() здесь, похоже, более гибкий вариант.

3. ммм, не уверен, почему ты так говоришь. partition имеет sep аргумент так же, как split . Однако стоит отметить, что в отличие split от него у него нет значения по умолчанию, поэтому эквивалент для split() на самом деле будет partition(' ')

4. работает отлично, но есть ли способ, например 1 10/88 , или test test1/test также работает, чтобы разделение происходило после / ? Спасибо!

5. @Tomerikoo: по умолчанию split() будет работать с любым символом пробела (пробел, табуляция и т. Д.), Тогда partition() как работает только с одной фиксированной строкой разделителя. split() здесь более гибко, поскольку мы не уверены, что такое разделитель полей для данных. Вы правы, хотя это partition() немного быстрее.