Форум сайта python.su
По роду деятельности потребовалось написать программку, которая позволяла бы задать перечень слов, после которых обычный пробел заменялся бы неразрывным, и второй перечень слов, перед которыми обычных пробел заменялся бы неразрывным (например, обычный пробел после слова “статья”, если следом стоит цифры, заменялся бы на неразрывный). Файл, с которым программа работать - TTX, SDLXLIFF (по сути - XML). Насколько сложно это реализовать с простеньким GUI, который позволял бы водить список слов и символов, после/перед которыми обычный пробел заменялся бы на неразрывный, делался бы автоматический бэкап файла в работе, была возможна “пакетная” обработка нескольких файлов?
Офлайн
Ничего сложного :)
Придеться разработать интерфейс, который будет по-тексту находить нужные слова и автоматически заменять один мнемокод на другой перед или до слова… GUI можно писать даже самое простое.
P.S. Можно даже без GUI, на основе config файла.
Отредактировано 4kpt (Июль 14, 2013 19:42:52)
Офлайн
f1 = open('myFile.sdlxliff', 'r') f2 = open('myFile.sdlxliffOUTPUT', 'w') for line in f1: f2.write(line.replace('Статья ', 'Статья ')) f1.close() f2.close()
import sys, string, os, shutil shutil.copyfile("D:/Downloads/test.docx_en-US_ru-RU.sdlxliff", "D:/Downloads/test.docx_en-US_ru-RU_copy.sdlxliff")
Отредактировано lion9 (Июль 14, 2013 20:31:42)
Офлайн
Для обновления файла лучше выполнять такую последовательность:
1. Запись обработанных данных с временным именем.
2. Переименование исходного во временное имя.
3. Переименование результата в оригинальное имя.
4. Удаление исходного.
Если хочется чуть быстрее, но чуть менее надежно:
1. Переименование исходного во временное имя.
2. Запись обработанных данных с оригинальным именем.
3. Удаление исходного.
Офлайн
Shaman
Для обновления файла лучше выполнять такую последовательность:1. Запись обработанных данных с временным именем.2. Переименование исходного во временное имя.3. Переименование результата в оригинальное имя.4. Удаление исходного.Если хочется чуть быстрее, но чуть менее надежно:1. Переименование исходного во временное имя.2. Запись обработанных данных с оригинальным именем.3. Удаление исходного.
Отредактировано lion9 (Июль 14, 2013 21:04:15)
Офлайн
lion9
А каким манером объявить переменной имя только что открытого файла?
name='name.nam' f = open(name)
f = open('name.nam') name = f.name
Офлайн
lion9Python 3
Как в GUI открыть файл, чтобы его имя сохранилось как переменная, к которой можно было бы дописать “_backup”?
# -*- coding: cp1251 -*- import os import tkinter as tk from tkinter import filedialog, messagebox class Application(tk.Frame): def __init__(self, master=None): tk.Frame.__init__(self, master) self.v_file = tk.StringVar() self.pack() self.createWidgets() def createWidgets(self): self.mframe=tk.Frame(self, bd=3) self.finput=tk.Entry(self.mframe, textvariable=self.v_file , width=48) self.b_select=tk.Button(self.mframe, text='Выбрать', command=self.select_file) self.mframe.pack() self.finput.pack(side = 'left') self.b_select.pack(side = 'right') def select_file(self): self.v_file.set(filedialog.askopenfilename(initialdir=os.path.expanduser('~'))) messagebox.showinfo('Имя', self.v_file.get()) root = tk.Tk() app = Application(master=root) app.mainloop()
Отредактировано Shaman (Июль 14, 2013 22:07:29)
Офлайн
Эти две строки вынесли мне мозг :)
import tkinter as tk from tkinter import filedialog, messagebox
root = tk.Tk()
Отредактировано 4kpt (Июль 14, 2013 23:05:42)
Офлайн
4kptА как лучше? Такой аккорд часто встречается.
Эти две строки вынесли мне мозг
4kptЯ с Tk дел почти не имею. Код накопипастил откуда-то, когда был нужен.
Зачем, если Вы наследуете от рамки. Она сама себе построит корневое окно. Имеет смысл задавать root, если Вы собираетесь фиксировать его размер
Отредактировано Shaman (Июль 14, 2013 23:17:45)
Офлайн
http://docs.python.org/3/library/tkinter.html#a-simple-hello-world-program - вот он! Этот вредный источник гражданской наружности.
Отредактировано Shaman (Июль 14, 2013 23:25:30)
Офлайн