从字符串中删除不同类型的双引号?

时间:2019-05-03 08:38:42

标签: python string subset quotes

我有一个名称列表,其中包含以英寸为单位的大小。如:

  

华硕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 个答案:

答案 0 :(得分:3)

您只需使用字符串[:]

即可删除最后的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 :(得分:1)

假设大小总是用空格很好地分隔开,我们可以简单地删除包含引号的“单词”。奖励点是因为大小也可以在字符串中的任意位置。

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(" ")