Найти - Пользователи
Полная версия: Отформатирование исходного файла.
Начало » Центр помощи » Отформатирование исходного файла.
1 2
be_smmr
Дан файл text.txt, содержащий некоторый достаточно длинный текст в

в одну строку
Firik
Покажите же широкой общественности ваше клавиатурное произведение
doza_and
be_smmr
Я начал делать данную задачу через метод split(), когда цикл доходит до 150 элемента, идет вставка.
Вариантов может быть масса. В чем вопрос?
be_smmr
Можете предложить свой вариант решения, даже не обязательно и в виде кода.
Просто
b = a.split(" ")
for i in range(len(b)):
    for j in range(len(b[i])):
будет просматривать каждый элемент, но так как мы удалили все пробелы - получается нужно отнять кол-во элементов перед элементом, где находится сам 150 символ и тогда уже делать вставку “/n” перед или после него. Но может есть что-то более удобное для реализации данной задачи?
doza_and
be_smmr
Но может есть что-то более удобное для реализации данной задачи?
Вопрос понял.
1. Удобство понятие субъективное. Только вы и можете об этом судить.
2. Вопрос про удобство преждевременный. Ваш код неработоспособен, сначала надо сделать чтобы работало, потом задумываться об удобстве.
3. В питоне обычно пишут короче.
for word in b.split():
     count+=len(word)+1
     if count>150:
         pass
4 такой сплит как у вас непригоден
a=""" asd asd
qwe qwe
"""
>>> a.split(" ")
['', 'asd', 'asd\nqwe', 'qwe\n']
be_smmr
Спасибо за данный код, но как реализовать именно тот момент, что перенос должен быть на 150 элементе, если он является пробелом или если 150 является любым иным символом - нужно после дойти до пробела и сделать срез.
marvellik
be_smmr
Отформатировать исходный файл так, чтобы каждая строка была не
длиннее 150 символов
120 символов тоже не длинее 150. зачем тогда именно по 150 делить?
суть такая. берете 150 символов строки ищете первое вхождение пробела с конца строки stroka.rfind(' ')
вот вам срез по пробелу не более 150 символов. опять от индекса вхождения этого пробела берете 150 символов и опять ищете пробел с конца строки и так в цикле всю строку
doza_and
be_smmr
перенос должен быть на 150 элементе
Не путайте элементы, слова и буквы. Я привел практически рабочий код. вам надо добавить 3-4 строчки. Смысл такой если следующее слово делает строку длиннее 150 букв то надо перед печатью слова напечатать перевод строки.
marvellik
be_smmr
Отформатировать исходный файл так, чтобы каждая строка была не
длиннее 150 символов
где тут написано что перенос должен быть на 150 символе????
be_smmr
Переносы внутри слов не допускаются
так вы никогда не измените строку потому как 1 из 1000 вариантов что 150 символ будет пробел! поэтому ищете в строке пробел который ближе всех находиться возле 150 символа и по нему делите. получается согласно условию НЕ БОЛЕЕ 150 символов и Переносы внутри слов НЕ допускаются
be_smmr
a = "Длинный текст"
a_2 = ""
a_3 = ""
k = 0
k_2 = 100
for i in range(len(a)):
    if i == k_2:
        a_2 = a[k:k_2]
        b = a_2.rfind(' ')
        a_3 = a_2[k:b]
        k = b
        k_2 += 100
print(a_3)
Может как-то таким способом докрутить?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB