#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/U62KjKt3. Вы пытаетесь выводить только числовые данные?
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()
немного быстрее.