さて、私は次の小さな機能を持っています:
def swap(inp):
inp = inp.split()
out = ""
for item in inp:
ind = inp.index(item)
item = item.replace("i am", "you are")
item = item.replace("you are", "I am")
item = item.replace("i'm", "you're")
item = item.replace("you're", "I'm")
item = item.replace("my", "your")
item = item.replace("your", "my")
item = item.replace("you", "I")
item = item.replace("my", "your")
item = item.replace("i", "you")
inp[ind] = item
for item in inp:
ind = inp.index(item)
item = item + " "
inp[ind] = item
return out.join(inp)
これは、特に効率的ではありませんが、短い文の仕事を成し遂げます. 基本的には、代名詞などの視点を入れ替えるだけです。これは、「I love you」のような文字列を投げると問題なく、「you love me」が返されますが、次のようなものを投げると:
you love your version of my couch because I love you, and you're a couch-lover.
私は得る:
I love your versyouon of your couch because I love I, and I'm a couch-lover.
なぜこれが起こっているのか混乱しています。これを避けるために、文字列を明示的にリストに分割しました。完全一致ではなく、リスト項目の一部として検出できるのはなぜですか?
また、同様の別の質問を投稿する必要がないように、わずかに逸脱しています。これに対する解決策がこの機能を壊す場合、コンマ、ピリオド、その他の句読点はどうなりますか?
それはいくつかの非常に驚くべき間違いを犯しました。私の予想される出力は次のとおりです。
I love my version of your couch because you love I, and I'm a couch-lover.
このようにフォーマットした理由は、最終的に item.replace(x, y) 変数をデータベース内の単語に置き換えられるようにしたいからです。