Удаление разных типов двойных кавычек из строки? - PullRequest
2 голосов
/ 03 мая 2019

У меня есть список имен с размерами в дюймах.Например:

Asus VP248QG 24 ''

BenQ XYZ123456 32 "

Как видно, имя имеет двойной знак одинарной кавычки для дюймовв то время как второе имя имеет нормальный знак двойной кавычки.

У меня есть этот код для удаления этих размеров, потому что они мне не нужны:

def monitor_fix(s):
    if ('"' in s):
        return re.sub(r'\s+\d+(?:\.\d+)"\s*$', '', str(s))
    if ("''" in s):
        return re.sub(r"\s+\d+(?:\.\d+)''\s*$", '', str(s))

Но он удаляет только обычный знак двойной кавычки, а не знак двойной одинарной кавычки. Как с этим бороться?

Ответы [ 2 ]

3 голосов
/ 03 мая 2019

Вы можете просто удалить последние 4 - 5 символов со строкой [:]

list = ["Asus VP248QG 24''", 'BenQ XYZ123456 32"']

for i in range(len(list)):
    if "''" in list[i]:
        list[i] = list[i][:-5]
    if '"' in list[i]:
         list[i] = list[i][:-4]
    print(list[i])
1 голос
/ 03 мая 2019

Предполагая, что размеры всегда хорошо разделены пробелами, мы можем просто удалить слово, содержащее кавычки.Бонусный пункт, потому что размер может быть в любом месте строки.

products = ["Asus VP248QG 24'' silver", 'BenQ XYZ123456 32"']

for n, product in enumerate(products):

    product_without_size = ""
    for word in product.split(" "):
        if not("''" in word or '"' in word):   # If the current word is not a size,
            product_without_size += word + " " # add it to the product name (else skip it).
    products[n] = product_without_size.rstrip(" ")

print(products) # ['Asus VP248QG silver', 'BenQ XYZ123456']

Используя формат вашего исходного сообщения, он будет выглядеть так:

def monitor_fix(product):

    product_without_size = ""
    for word in product.split(" "):
        if not("''" in word or '"' in word):   # If the current word is not a size,
            product_without_size += word + " " # add it to the product name (else skip it).
    return product_without_size.rstrip(" ")
...