2013-08-15 3 views
4

У меня есть две строковые переменные - string_A и string_B. string_A содержит следующее:Удалить строку из другой строки

"ONE" # "TWO" # "THREE" # "FOUR" # "FIVE"

и string_B содержит:

"NANA" # "PAA" # "THREE" # "ELI"

Я хочу, чтобы удалить все элементы, которые находятся в string_A от string_B. После того, как я печатаю string_B он должен выглядеть "NANA" # "PAA" # "ELI"

Update:

x = textA.split(' # ') 
y = textB.split(' # ') 

for i, j in enumerate(x): 
if j in y[i]: 
    pass 
+2

Помогите с чем? Вы пытались решить эту проблему вообще? – Blender

+1

Да, позвольте мне обновить свой код –

+1

Обычно лучше не удалять элементы из списка. Лучше сделать новый список со списком предметов, которые вы хотите сохранить –

ответ

2

Прямой вперед решение:

a = '"ONE" # "TWO" # "THREE" # "FOUR" # "FIVE"' 
b = '"NANA" # "PAA" # "THREE" # "ELI' 

a_elements = [key.strip() for key in a.split('#')] 
b_elements = [key.strip() for key in b.split('#')] 
filtered_b_elements = [key for key in b_elements if key not in a_elements] 
new_b = ' # '.join(filtered_b_elements) 
7
a = '"ONE" # "TWO" # "THREE" # "FOUR" # "FIVE"' 
b = '"NANA" # "PAA" # "THREE" # "ELI"' 

a_elements = set(a.split(' # ')) 
b_elements = [key for key in b.split(' # ') if key not in a_elements] 

b = ' # '.join(b_elements) 
1

там вы идете:

' # '.join([x for x in string_B.split(' # ') if x not in string_A.split(' # ')]) 

Если вы хотите b etter performance, сначала создайте список из string_A и используйте это для предложения «not in».

+0

Я пробовал это :) – GLES

0
a = '"ONE" # "TWO" # "THREE" # "FOUR" # "FIVE"' 
b = '"NANA" # "PAA" # "THREE" # "ELI"' 
x = a.split(' # ') 
y = b.split(' # ') 

for j in x: 
    if j in y: 
     #HOW TO REMOVE 
     y.remove(j) 

xx = ' # '.join(x) 
yy = ' # '.join(y) 
print xx 
print yy 

следующие выходы:

'"ONE" # "TWO" # "THREE" # "FOUR" # "FIVE"' 
'"NANA" # "PAA" # "ELI"' 
+1

Я хочу, чтобы это не было обернуто одинарными кавычками, и я хочу, чтобы вместо знака '#' находился знак '#'. Также, когда я печатаю его, все это должно быть строкой, а не списком. –

+0

@sharonHwk сделано, спасибо за исправление ;-) –

1

Для re вентиляторы:

import re 

e = '"ONE" # "TWO" # "THREE" # "FOUR" # "FIVE"' 
f = '"NANA" # "PAA" # "THREE" # "ELI"' 

ea_pattern = re.compile(r'"([a-zA-Z]+)"') 
ea = re.findall(ea_pattern,e) 
fa = re.findall(ea_pattern,f) 

answer = [x for x in fa if x not in ea] 
print(answer) 

Используйте эту list в какой бы путь вы хотите -

['NANA', 'PAA', 'ELI']

Смежные вопросы