を維持これは文字列の分割が今の私のためにどのように動作するかです:とパターン
output = string.encode('UTF8').split('}/n}')[0]
output += '}\n}'
しかし、それを行うにはより多くの神託の方法がある場合、私は疑問に思って。 '}/N}' を含む
の目標は、この'}/N}' の前にすべてを取得することである。 re.split()
として
を維持これは文字列の分割が今の私のためにどのように動作するかです:とパターン
output = string.encode('UTF8').split('}/n}')[0]
output += '}\n}'
しかし、それを行うにはより多くの神託の方法がある場合、私は疑問に思って。 '}/N}' を含む
の目標は、この'}/N}' の前にすべてを取得することである。 re.split()
として
を行うことができます - キーはあなたが上の分割どのような維持するために、分割パターンの周りに括弧を入れている:
import re
output = "".join(re.split(r'(}/n})', string.encode('UTF8'))[:2])
しかし、私は、これはどちらかで、最も効率的でも最もPython的疑いますあなたが望むものを達成する方法。私。私はこれが当然分割種類の問題だとは思わない。たとえば:
tag = '}/n}'
encoded = string.encode('UTF8')
output = encoded[:encoded.index(tag)] + tag
をしたり、ワンライナーを主張する場合:
output = (lambda string, tag: string[:string.index(tag)] + tag)(string.encode('UTF8'), '}/n}')
または正規表現に戻る:
output = re.match(r".*}/n}", string.encode('UTF8')).group(0)
Slice a string after a certain phrase?から適応、あなたが見つけると、スライスに組み合わせることができます文字列の最初の部分を取得し、}/n}
を保持します。
str = "012za}/n}ddfsdfk"
str[:str.find("}/n}")+4]
はstr.partition
の良い使用であるかもしれない012za}/n}
ですか?下の投票の説明がうまくいくでしょう。 – scrappedcola
私はそうではありませんでしたが、明らかなタイプミスがあります。それは 'str [str:str.find ...]'の代わりに 'str [:str.find ...]'でなければなりません。また、 'str.find'は、マッチが見つからないとき、-1 + 4 = 3のように振る舞います。 –
yup私はコンソールからカットアンドペーストできず、私が2Yを入力したことを知らなかった。 – scrappedcola
これになります。
string = '012za}/n}ddfsdfk'
parts = string.partition('}/n}')
# ('012za', '}/n}', 'ddfsdfk')
''.join(parts[:-1])
# 012za}/n}
または、str.index
で明示的に検出できます。
repl = '}/n}'
string[:string.index(repl) + len(repl)]
# 012za}/n}
部分文字列が見つからない場合は例外ではなく無意味な結果を生成するよりも、発生しますので、これはおそらく、str.find
を使用するよりも優れています。
「よりエレガント」には正規表現が必要なようです。
import re
re.search('(.*?}/n})', string).group(0)
# 012za}/n}
>>> string_to_split = 'first item{\n{second item'
>>> sep = '{\n{'
>>> output = [item + sep for item in string_to_split.split(sep)]
NOTE: output = ['first item{\n{', 'second item{\n{']
、あなたが結果を使用することができます。
for item_with_delimiter in output:
...
あなたが行末がどうなるかわからない場合os.linesep
をルックアップするために役に立つかもしれません。 os.linesep
は現在のOSの行末が何であれ、Windowsの場合は'\r\n'
、LinuxまたはMacの場合は'\n'
です。これは、入力データがどこから来たのか、コードが環境全体でどの程度柔軟である必要があるのかによって異なります。
あなたの質問はかなり不明です。あなたの入力と予想される出力は何ですか? –
@ OrangeFlash81: '}/n}'の前にすべてを取得しようとしていますが、上記のようにより良い方法を見つけることができませんでした。 – Empario
ご清聴ありがとうございます!私はそれをするためのよりよい方法を知らないが、それもあるかもしれない。 –