2015-01-01 3 views
1

У меня есть скрипты Python, написанные на Python 2.7. Я должен использовать, что сценарии с Python 3.x, но я должен изменить так много вещей, как:Преобразование скриптов в другую версию Python

print "something" 

в

print ("something") 

, потому что Python 3.x не поддерживает Распечатайте функцию без круглых скобок. Я не хочу делать это вручную, потому что это будет слишком долго и тяжело. Я попробовал модуль re, но не смог. Я застрял, поэтому любая помощь будет оценена.

+0

2to3 программа Python, который читает Python 2.x исходный код и применяет ряд фиксаторов, чтобы превратить его в действительный Python 3.x https://docs.python.org/2/library/2to3. html – Kasramvd

+0

Im new Im извините, если этот вопрос некачественный ... –

+0

его нормально, но его лучше, чем хотя бы на поиск, прежде чем задавать вопрос! – Kasramvd

ответ

0

Вы можете попробовать что-то вроде этого.

import re     

with open("myprogram.py","r",encoding='utf8') as f: 
    for x in f.readlines(): 
     y = x # Main code x defining as y. 
     if re.findall("print",x) == ['print']: # if 'print' is found; 
      x = "print(" + x.split("print")[1].strip() + ")" # strip it quotation mark and paranthesis; 
      y = y.replace(y,x) #.. replace y with x. 
     with open("different.py","a+") as ff: 
      (y.strip()) # attention using \n for every sentence.. 

Но это может нарушить дизайн вашего кода. Поэтому распечатайте их и скопируйте.

import re     

with open("myprogram.py","r",encoding='utf8') as f: 
    for x in f.readlines(): 
     y = x # Main code x defining as y. 
     if re.findall("print",x) == ['print']: # if 'print' is found; 
      x = "print(" + x.split("print")[1].strip() + ")" # strip it quotation mark and paranthesis; 
      y = y.replace(y,x) #.. replace y with x. 
     print(y.strip()) 
+0

ничего себе это работает. Я пытаюсь понять х и полосу. –

+1

Это отличная идея. Что, если слово 'print' появляется в контексте, отличном от оператора (имена переменных, строковые литералы и т. Д.)? Он также не обрабатывает, например. конечная запятая приносит замену аргументом ключевого слова 'end = '''. – jonrsharpe

+0

Но вместо того, чтобы писать, напечатайте его. Позвольте мне изменить. –

4

Попробуйте автоматизированную 2to3 библиотеку

https://docs.python.org/2/library/2to3.html

$ 2to3 example.py 

Чтобы внести изменения непосредственно

$ 2to3 -w example.py 

ШАГИ

  1. Написать свой код в файл с именем example.py

    print "something"

  2. Сохранить и закрыть. Откройте терминал и введите

    2to3 -w example.py

  3. Открыть файл сейчас. Тада ... код преобразуется

    print(something)

+0

thankyou for answer bhargav –

+0

Он будет запускать программу автоматического преобразования, это лучше, более общий и проверенный ответ. В документе lib2to3 объясняется использование скрипта 2to3.py. Я использовал его для преобразования пакета из нескольких модулей. –

Смежные вопросы