2015-11-23 16 views
-1

我有一個python腳本,基本上解析XML文件,使用包re並打印文本如下:將文本從python傳遞給shell | unicode |實行切削它

string = str(search_compiled.groups(0)[0].encode('utf-8')) + "%" + str(text.encode('utf-8')) 
print string 

我得到的shell腳本文如下:

string="$($file.py $arg1 $arg2 $arg3)" 
varA="$(echo "$string" | cut -d'%' -f1)" 
varB="$(echo "$string" | cut -d'%' -f2)" 
echo "$string" 

因此,總之,我需要傳遞的字符串被分隔符'%'分割成兩部分,並將結果存儲在varAvarB中。

分裂不會發生。 字符串顯示整個東西:部分A加上部分B.這裏是catch,我在python腳本中添加的'%'不會被打印出來。

任何人都可以幫助我理解發生了什麼問題嗎?

+0

你什麼錯誤?什麼是'file.py'的輸出? – davejagoda

+0

把你的腳本的名字放在一個變量'file'中看起來很奇怪。 – tripleee

+0

您知道使用'%'的傳統Python 2打印格式化函數需要字符'%'在格式字符串中加倍以便打印文字'%'? – tripleee

回答

0

您可以使用管道和切割命令,你的問題,但沒有對分隔符使用引號-d%,而不是-d「%」

varA=$(echo $string | cut -f1 -d%) 
varB=$(echo $string | cut -f2 -d%) 
+0

@jasv嗨。感謝您的鏈接。但它沒有按預期工作。就像在python中一樣,我們有'split('%',1)'在第一次出現時分割。這裏有什麼嗎? – complextea

+0

是的。你可以使用-cut,因爲我已經在上面添加了。 – jasv

+0

我爲代碼錯誤表示歉意。只是學習規則/等stackoverflow。 – jasv

0

我重新閱讀本作有第三次,我認爲這是基本問題(從你的描述中):

字符串顯示整個東西:部分A加上部分B.下面是catch,我在python腳本中添加的'%'不會被打印。

數據轉換爲utf-8然後返回到字符串似乎對我來說是可疑的。你可以在你的Python程序改變字符串創建行這樣的:

string = u'{}%{}'.format(search_compiled.groups(0)[0].encode('utf-8'), text.encode('utf-8')) 

你可能是雙編碼,所以這可能是你所需要的:

string = u'{}%{}'.format(search_compiled.groups(0)[0], text) 

在shell腳本之前將它添加此調用python腳本:

export PYTHONIOENCODING=UTF-8 
+0

沒有。不起作用。沒有錯誤。但削減不分裂。 – complextea

0
[[email protected] /tmp]$ eval `echo "aaa%bbb%ccc" | awk -F '%' '{print "a="$1" b="$2}'` 
[[email protected] /tmp]$ echo $a 
aaa 
[[email protected] /tmp]$ echo $b 
bbb 

說明

使用awk -F '%' '{print "a="$1" b="$2}'得到這樣a=aaa b=bbb

EVAL a=aaa b=bbb相當於輸入端子

$ a=aaa 
$ b=bbb 
+2

你能解釋你的代碼是如何工作的?這將使OP和其他人能夠在其他地方瞭解和應用您的方法(如果適用)。僅有代碼的答案[不鼓勵](http://meta.stackexchange.com/q/148272/284827),並且可能被刪除。 - [審查期間](http://stackoverflow.com/review/low-quality-posts/10301047) –

+0

對不起!我不能用英文解釋。 – bian

+0

即使你用自己的語言編寫它,Google也會將它翻譯成破碎的英文,這比沒有好。 –

相關問題