2014-09-11 103 views
3

我試圖將字符串中的字符轉換爲單獨的ascii值。我似乎無法讓每個角色都變成相對的ascii值。Python:將列表中的字符串值更改爲ascii值

例如,如果可變字的值爲[ 「你好」, 「世界」],在運行完成代碼之後列表ASCII將具有值:

[104,101,108,108,111 ,119,111,114,108,100]

到目前爲止我有:

words = ["hello", "world"] 
ascii = [] 
for x in words: 
    ascii.append(ord(x)) 

打印這個返回一個錯誤ORD期待一個字符,但得到的字符串。有誰知道我可以如何解決這個問題,以返回每個字母的ASCII值?三江源

回答

1

款待詞作爲一個長字符串,而不是(使用嵌套列表-COMP爲例):

ascii = [ord(ch) for word in words for ch in word] 
# [104, 101, 108, 108, 111, 119, 111, 114, 108, 100] 

等同於:

ascii = [] 
for word in words: 
    for ch in word: 
     ascii.append(ord(ch)) 

如果你想要做他們作爲獨立的話,那麼你改變你的list-comp:

ascii = [[ord(ch) for ch in word] for word in words] 
# [[104, 101, 108, 108, 111], [119, 111, 114, 108, 100]] 
+0

如果我想打印的ASCII變量作爲兩個單獨列表?e.g什麼。 [[104,101,108,108,111],[119,111,114,108,100]] – user2747367 2014-09-11 09:28:50

+0

@ user2747367用示例更新 – 2014-09-11 09:32:03

1

你的循環遍歷words這是一個列表string的列表頁面。現在,ord是一個函數,它將返回一個字符字符串的整數序數。所以你需要迭代字符串的字符。

words = ["hello", "world"] 
ascii = [] 
for word in words: 
    ascii.extend(ord(ch) for ch in word) 

print ascii會給你,

[104, 101, 108, 108, 111, 119, 111, 114, 108, 100]