2014-01-28 2 views
0

У меня есть файл:Python как улучшить этот пример?

one two three 
four five six 

Я попробовал эту команду:

python -c "import sys; print ''.join(x.replace("two", "xxx") for x in sys.stdin)" < file 

Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
    File "<string>", line 1, in <genexpr> 
NameError: global name 'two' is not defined 

Я хочу, чтобы получить результат:

one xxx three 
four five six 

Как улучшить приведенный выше пример?

+3

Просто измените 'x.replace ("два", "ххх")' в 'x.replace ('two', 'xxx') '(с одинарными кавычками). У вас проблема с оболочкой, а не с проблемой Python. – lanzz

+0

@lanzz: это скорее ответ, чем комментарий, нет? – DSM

+1

Да, но вопрос слишком тривиален и, вероятно, не очень по теме. – lanzz

ответ

2

Вы должны сделать обратную сортировку (выход) two и xxx или указать ее. Это будет работать

python -c "import sys; print ''.join(x.replace(\"two\", \"xxx\") for x in sys.stdin)" < file

+0

Благодарим за помощь. – Tedee12345

1

Вы не правильно избежать двойных кавычек

python -c 'import sys; print "".join(x.replace("two", "xxx") for x in sys.stdin)' < filename 
+0

не получит «SyntaxError: EOL во время сканирования строки литерала»? – zhangxaochen

+0

@zhangxaochen: Я проверил его на своей машине перед отправкой, и я не сделал 't получить SyntaxError. Вы столкнулись с такой ошибкой? – inspectorG4dget

+0

Я получаю эту ошибку при использовании одинарных кавычек, например 'python -c' import os'', я на win7, py2 (и py3) – zhangxaochen

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