Python: эффективный способ манипулирования строкой? - PullRequest
0 голосов
/ 02 марта 2012

допустим, у вас есть строки

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

и

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

Есть ли простая техника, которую вы можете использовать для конвертации

    s1 to "(element1, element2, element3)"

и

    s2 to "(1, 2, 3)"

Для s1 каждая одиночная кавычка должна исчезнуть, а для s2 каждая A должна исчезнуть. Какой самый простой способ сделать это и только это?

РЕДАКТИРОВАТЬ -> все в кавычках является частью всей строки ... нет кортежей и переменных. Спасибо!

Ответы [ 4 ]

3 голосов
/ 02 марта 2012

Я предполагаю, что s1 и s2 должны быть строками

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

Чтобы удалить все одинарные кавычки из s1, вы можете использовать

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

Чтобы удалить все вхождения буквы A из s2, используйте

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

Обратите внимание, что строки нельзя изменить на месте (они неизменны) - str.replace() вернет новую строку.

2 голосов
/ 02 марта 2012

Я что-то упустил?

>>> s1 = "('element1', 'element2', 'element3')"
>>> s2 = "(1A, 2A, 3A)"
>>> print s1.replace("'", "")
(element1, element2, element3)
>>> print s2.replace("A", "")
(1, 2, 3)
1 голос
/ 02 марта 2012

Вы не хотите делать эти манипуляции в ленточной стране. То, что вы действительно хотите, - это проанализировать ваши элементы в списке строк, манипулировать ими как списком и соединить их обратно в строку.

Может оказаться полезной следующая функция. Разумеется, остерегайтесь уязвимостей в безопасности, если злоумышленник может контролировать строки (например, может вставить ' и , в любом месте).

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 голосов
/ 02 марта 2012
>>> 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)'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...