カンマで分割する必要のある文字列がたくさんあります。例:
myString = r'test,Test,NEAR(this,that,DISTANCE=4),test again,"another test"'
myString = r'test,Test,FOLLOWEDBY(this,that,DISTANCE=4),test again,"another test"'
私の希望する出力は次のとおりです。
["test", "Test", "NEAR(this,that,DISTANCE=4)", "test again", """another test"""] #list length = 5
1つの項目で「this、that、DISTANCE」の間にコンマを入れる方法がわかりません。私はこれを試しました:
l = re.compile(r',').split(myString) # matches all commas
l = re.compile(r'(?<!\(),(?=\))').split(myString) # (negative lookback/lookforward) - no matches at all
何か案は?許可された「関数」のリストが次のように定義されているとしましょう。
f = ["NEAR","FOLLOWEDBY","AND","OR","MAX"]
あなたは使用することができます
(?:\([^()]*\)|[^,])+
正規表現のデモを参照してください。
この(?:\([^()]*\)|[^,])+
パターンは、括弧内にno(
とが含ま)
れる部分文字列、または,
。以外の文字が1つ以上出現する場合に一致します。
Pythonデモを参照してください:
import re
rx = r"(?:\([^()]*\)|[^,])+"
s = 'test,Test,NEAR(this,that,DISTANCE=4),test again,"another test"'
print(re.findall(rx, s))
# => ['test', 'Test', 'NEAR(this,that,DISTANCE=4)', 'test again', '"another test"']
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加