2017-05-06 11 views
0

私は以下に述べる入力文字列を持っています。Pythonが文字列の位置を見つける

出力は次のとおりです。 'AS'キーワードは削除する必要があります。どのようにして 'AS'の直前にあるコンマの位置を見つけることができますか? find()以外のpythonには、OracleのINSTRと同様の働きをするメソッドがありますか?

"N.ACM_CONTRACT_TR_STATUS,  N.ACM_REVIEW_DDQ,  N.ACM_IS_GO_IND, N.ACM_CHARITY_REGISTERED_IND"` 
+4

「AS」 - 'input = input.replace( 'AS'、 '')'を直接削除することができる理由は何ですか?注:私は、組み込み関数を隠す変数を使用しないでください。つまり、変数名として 'input'を使用しません。 – AChampion

+0

これは単なる例です。私はA、B、Xのようないくつかの値を持っています| | Y || Z ||私は結果にA、B、Cが必要なAS Cです。私の目的は「AS」を削除することだけではなく、「AS」の直前にある「、」からすべての文字を削除することです – Leo

答えて

-1

この投稿へのコメントは正しいです。私は謝罪する、私は非常に疲れている。

import re 

text="N.ACM_CONTRACT_TR_STATUS,  N.ACM_REVIEW_DDQ,  N.ACM_IS_GO_IND, AS N.ACM_CHARITY_REGISTERED_IND" 
# Matches comma, any whitespace between comma and 'AS', and 'AS' itself, 
# but only if 'AS' is a word in its own right. 
unwanted_chars_re = re.compile(r",\s*AS\b") 
new_text = unwanted_chars_re.sub('', text) 

新しい文字列は'N.ACM_CONTRACT_TR_STATUS, N.ACM_REVIEW_DDQ, N.ACM_IS_GO_IND N.ACM_CHARITY_REGISTERED_IND'です。

+1

これは「AS」で始まるものに適用されます。また、 'input'を使うことは悪い習慣とみなされ、パイリントを叫ぶでしょう。 –

0
import re 

s = "N.ACM_CONTRACT_TR_STATUS,  N.ACM_REVIEW_DDQ,  N.ACM_IS_GO_IND, AS N.ACM_CHARITY_REGISTERED_IN" 
re.sub(r",(\s+)AS(\s+)", r"\1,\2", s) 
+0

置換文字列を生の文字列にすると動作します: 'r" \ 1、\ 2 "' それ以外の場合は ''N.ACM_CONTRACT_TR_STATUS、N.ACM_REVIEW_DDQ、N.ACM_IS_GO_IND \ x01、\ x02N.ACM_CHARITY_REGISTERED_IN'' – BoarGules

+0

修正済み。ありがとう! –

関連する問題