2012-03-01 41 views
-1

假設你有串Python:操縱字符串的有效方法?

s1 = "('element1', 'element2', 'element3')" 

s2 = "(1A, 2A, 3A)" 

有一個簡單的技術,你可以用它來轉換

s1 to "(element1, element2, element3)" 

s2 to "(1, 2, 3)" 

對於s1,每個單引號需要消失,並且對於s2,每個A應該消失。什麼是最直接的方式來做到這一點,只有這一點?

編輯 - >引號內的所有內容都是整個字符串的一部分......沒有元組或任何變量。謝謝!

+2

是's1'應該是字符串' 「( '部件1', 'element2的', '元素3')」',或者是三個字符串組成的元組? – 2012-03-01 23:20:19

+0

對不起,是的,他們是字符串,而不是元組!在這些例子中沒有任何變量......它們實際上只是字符串的一部分.... – 2012-03-01 23:21:57

+0

您的規格不完整。請澄清你想要做什麼:輸入是什麼,什麼是預期的輸出,最好是與他們的類型。另外,我不確定你是在尋找一種通用方法還是針對's1'和's2'的不同方法。 – 2012-03-01 23:23:41

回答

3

我認爲s1s2應該是字符串

s1 = "('element1', 'element2', 'element3')" 
s2 = "(1A, 2A, 3A)" 

s1刪除所有單引號,您可以使用

s1 = s1.replace("'", "") 

要刪除信A的所有出現s2,使用

s2 = s2.replace("A", "") 

請注意,字符串不能在適當位置進行修改(它們是不可變的) - str.replace()將返回一個新字符串。

+0

謝謝,我不明白什麼是所有的混亂,不幸...但是非常感謝您的幫助:) – 2012-03-01 23:36:29

2

我錯過了什麼嗎?

>>> s1 = "('element1', 'element2', 'element3')" 
>>> s2 = "(1A, 2A, 3A)" 
>>> print s1.replace("'", "") 
(element1, element2, element3) 
>>> print s2.replace("A", "") 
(1, 2, 3) 
1

你不想在字符串域中進行這些操作。你真正想要的是將你的元素解析爲一個字符串列表,將它們作爲列表處理,然後將它們加入到一個字符串中。

您可能會發現以下功能有用。當然,如果攻擊者控制了字符串(例如可以在任何地方插入',),請注意安全漏洞。

def tuplestringToList(s): 
    """ 
     "(AAAAA, BBBBB , CCCCC)" -> ["AAAAA", "BBBBB", "CCCCC"] 
    """ 
    assert s.startswith('(') 
    assert s.endswith(')') 
    return [fragment.strip() for fragment in s[1:-1].split(',')] 

def listToTuplestring(myList): 
    return '({})'.format(', '.join(myList)) 
+0

「...將元素合併到一個字符串中」,不應該將「...元素合併到一個字符串列表中」? – 2012-03-01 23:28:41

+0

@AdamParkin:謝謝 – ninjagecko 2012-03-01 23:32:08

0
>>> s1 = "('element1', 'element2', 'element3')" 
>>> result = ''.join([i for i in s1 if i != "'"]) 
>>> result 
'(element1, element2, element3)' 
>>> s2 = "(1A, 2A, 3A)" 
>>> result = ''.join([i for i in s2 if i != "A"]) 
>>> result 
'(1, 2, 3)'