Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Вставить слово/строку в строку  (Прочитано 1381 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн basilei

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Вставить слово/строку в строку
« : 10 Апреля 2013, 14:33:07 »
Добрый день.
 

Есть набор svg файлов. В них есть строки типа: 
<a xlink:href="http://yandex.ru">
надо найти строки по: <a xlink:href=" и вставить: target="_replace"
Итог должен быть: <a xlink:href="http://yandex.ru" target="_replace">

Помогите плиз новичку в Python:'(
« Последнее редактирование: 10 Апреля 2013, 14:54:46 от basilei »

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Вставить слово/строку в строку
« Ответ #1 : 10 Апреля 2013, 15:20:10 »
Хз, как оно на python, но можно сделать через sed:
sed 's/\(a xlink\:href="[^"]*"\)/\1 target="_replace"/g'

Оффлайн basilei

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Вставить слово/строку в строку
« Ответ #2 : 10 Апреля 2013, 15:53:52 »
Хз, как оно на python, но можно сделать через sed:
sed 's/\(a xlink\:href="[^"]*"\)/\1 target="_replace"/g'

(Простите, на работе премерзкие форточки)
E:\DOCS\DelString\sed-3.59.exe sed 's/\(a xlink\:href="[^"]*"\)/\1 target="_replace"/g' E:\DOCS\DelString\mark3.txt

mark3.txt - в нем одна строка <a xlink:href="http://yandex.ru">

Ошибка

E:\DOCS\DelString>E:\DOCS\DelString\sed-3.59.exe sed -e 's/\(a xlink\:href="[^"]*"\)/\1 target="_replace"/g' E:\DOCS\DelString\mark3.txt
E:\DOCS\DelString\sed-3.59.exe: -e expression #1, char 1: Unknown command: `''

Но вообще, надо на python, так как у меня есть первая часть скрипта, которая удаляет лишние строки по маске.
« Последнее редактирование: 10 Апреля 2013, 16:00:56 от basilei »

Оффлайн Freezeman

  • Активист
  • *
  • Сообщений: 637
  • Xubuntu 14.04.2 LTS :: SSD Kingston HyperX Fury
    • Просмотр профиля

Оффлайн basilei

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
« Последнее редактирование: 10 Апреля 2013, 20:29:59 от andrew_bye »

Оффлайн basilei

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Вставить слово/строку в строку
« Ответ #5 : 19 Апреля 2013, 12:16:19 »
Сварганил.

Немного убого, но для моих нужд подошло, добавляет нужную строку + удаляет строки title. По идее, это нужно для редактирования *.svg, которые создаются в Visio. Кто создавал - тот поймет. 


import os

def filename():         
  tree = os.listdir("./")
  files = []
  for f in tree:
    if f[-3:] == 'svg':   
      files.append(f)
  return(files)
a=filename()     
b=len(a)

def remove_string(z, string):

    tempname = z + '.temp' # os.tempnam() gives warning

    fin = open( z, "r" )
    fout = open( tempname, 'w' )
    for line in fin:
        if line.find( '<a xlink:href=' ) != -1:
            x=line.find('"', 34) 
            new_line=line[:x+1] + ' target="_replace">' + '\n'
            fout.write(new_line)   
        elif line.find( string ) == -1:
            fout.write(line)     
    fin.close()
    fout.close()
    os.remove(z)
    os.rename(tempname, z)


i = 0
while i < b:
   z=a[i]
   string = "title"
   remove_string(z, string)
   i = i + 1

 

Страница сгенерирована за 0.017 секунд. Запросов: 20.