Ein Austausch zwischen den Listen

stimmen
-1
a = [I like apple,I love you so much]

Ich will „Apfel“ und „Liebe“ Worte mit folgenden Änderungen: „orange“, „wie“ aber ich will nicht die Elemente ändern (Sätze) in einem so ausgegeben werden muß

a= [I like orange,I like you so much]

Es sollten keine Änderungen in irgendetwas außer Worten geschehen orangeund like. Nicht einmal ein Raum hinzugefügt oder gelöscht.

Veröffentlicht am 23/11/2017 um 16:00
vom benutzer
In anderen Sprachen...                            


7 antworten

stimmen
0

Sie können:

a[0].replace('apple', 'orange')
a[1].replace('love', 'like')
Beantwortet am 23/11/2017 um 16:05
quelle vom benutzer

stimmen
0

wenn Sie wollen bleiben, wie es versuchen, das ist,

>>> a = ["I like apple","I love you so much"]
>>> [i.replace('apple','orange').replace('love','like') for i in a]
['I like orange', 'I like you so much']
>>> 
Beantwortet am 23/11/2017 um 16:06
quelle vom benutzer

stimmen
0

Suchen Sie so etwas? Was der folgende Code tut , ist die Schleife Strings in der Liste und überprüfen appleoder das Wort loveund ersetzen sie durch orangeoder likeentsprechend und gibt die Liste an Sie zurück.

[(i.replace("apple","orange") or i.replace("love","like")) for i in a]

Hier ist eine Ausführung

>>> a = ["I like apple","I love you so much"]
>>> [(i.replace("apple","orange") or i.replace("love","like")) for i in a]
['I like orange', 'I love you so much']
Beantwortet am 23/11/2017 um 16:06
quelle vom benutzer

stimmen
0

Strings sind unveränderlich in Python, also nicht so modifiziert werden, einen Anruf wie

a[0].replace("apple","orange")

wird eine neue Zeichenfolge zurück, und nicht das ursprüngliche Element der Liste ändern.

a[0]=a[0].replace("apple","orange")

Dies sollte die Arbeit machen.

Beantwortet am 23/11/2017 um 16:07
quelle vom benutzer

stimmen
0
replace_map = [
    ('apple', 'orange'),
    ('love', 'like')
]

def replace_all(s, m):
  for k, v in m:
    s = s.replace(k, v)
  return s

b = [replace_all(s, replace_map) for s in a]
Beantwortet am 23/11/2017 um 16:07
quelle vom benutzer

stimmen
1

Sie können ein Wörterbuch haben die Zuordnung zu tun:

word_mapping = {
    'apple': 'orange',
    'love': 'like'
}

Und dann, vorausgesetzt , Sie haben ein list of strings:

 def translate(text):
     return reduce(lambda x, y: x.replace(y, word_mapping[y]), word_mapping, text)

 def translate_all(text_list):
      return [translate(s) for s in text_list]

z.B:

a = ["I like apple","I love you so much"]
b = translate_all(a)
print(b)
# > ['I like orange', 'I like you so much']
Beantwortet am 23/11/2017 um 16:10
quelle vom benutzer

stimmen
0

Die Liste Verständnis Gebrauch, wie von Patrick Haugh, Sudheesh Singanamalla und Mohideen ibn Mohammed vorgeschlagen, kann die mehr pythonic Weg ... Schritt für Schritt und weniger pythonic ist:

>>> a = ["I like apple","I love you so much"]
>>> for i in xrange(len(a)):
...     if a[i].find('apple') is not -1:
...             a[i]=a[i].replace('apple','orange')
...     if a[i].find('love') is not -1:
...             a[i]=a[i].replace('love','like')
... 
>>> a
['I like orange', 'I like you so much']

Oder mehr direkt an:

>>> for i in xrange(len(a)):
...     a[i]=a[i].replace('apple','orange')
...     a[i]=a[i].replace('love','like')
... 
>>> a
['I like orange', 'I like you so much']
Beantwortet am 23/11/2017 um 16:24
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more