2014-02-28 154 views
2

我是python的新手,所以我有這個問題。首先讓我告訴你我想做什麼。 我有一個包含一些像這樣的文件:python:替換字符串中的字

-0 
    1 
    3 
    5 
-00 
    2 
    3 
    18 
    321 
... 

我想利用每一個元素除了-0,-xxxx串並轉換成序列號,例如:

-0 
    1 
    2 
    3 
-00 
    4 
    2 
    5 
    6 
... 

我有完成此操作並將索引保​​存到字典 但我想在字符串內部替換它們。

我想更換原話,我不想更換可能包含另一個字舉例言之:

111 replaced by 6 
not 445111 replaced by 6 ~>4456 

我有這個想法,但我不知道這是否是有效的還是價值。對於-xxxx中的每個元素,我將創建一個列表,追加它的元素,然後重命名並替換它們,然後將它們保存到文件中。 任何想法?

+0

你是什麼意思,「序列字符串」? – 2rs2ts

+0

我想你可以用'str(count)'替換'''+ word +'''或者使用正則表達式邊界。 – Tempux

+0

這些元素是str(數字)。我想將這些元素依次重命名爲數字。如果您在示例中注意到我想將這些元素保存爲連續的數字,並且我將這個賦值索引爲字典 – bill

回答

1

字符串列表,我認爲這是你需要的東西:

for i, word in enumerate(z): 
    if "-" not in word: 
     if word in d.keys(): 
      z[i] = str(d[word]) 
     else: 
      count = count + 1 
      d[word] = count 
      z[i] = str(count) 

這樣你可以在原地替換單詞並且不需要任何字符串操作。

+0

是的,這可以做到這一點。謝謝 ! – bill

0

我不太清楚你想做什麼。但是,如果列表元素和字符串元素應該是相同的,爲什麼不從列表中執行str(elem)呢?這樣的方式,而不是替換字符串內的元素,你實際上是創建你想要在那裏開始的字符串。看起來你只是替換「單詞」,如果它不在字典中。如果它已經在字典中,則將該字本身留在字符串中。

根據您顯示的代碼,這似乎做

您可以創建

newz = [] 
for word in z: 
    if "-" not in word: 
    if word not in d.keys(): 
     count = count + 1 
     d[word] = count 
     newz.append(str(count)) 
    else: 
     newz.append(word) 
    else: 
    newz.append(word)