0

基本的に「-」の後の文を削除する以下のスクリプトがあります。announce.txtに複数の「-」があるため、以下の入力が含まれていると壊れます。基本的には、最初の「-」に基づいて最後から「-」に基づいて分割します。 .それを行う方法を提案してください...期待される出力があります

入力:- //components/rel/bt.wcnss/2.4/wcnss_proc/bt/platform/rom/inc/oi_sbc_tables-generated.h#1 - 分岐変更 700801 (テキスト)

期待される出力:- //components/rel/bt.wcnss/2.4/wcnss_proc/bt/platform/rom/inc/oi_sbc_tables-generated.h#1

f = open('announce.txt', 'r')
z = f.readlines()
f.close()

k = []

for items in z:
    print 'Current item %s'%items
    answer = items.split('-');
    k.append(answer[0].strip() + '\n')

f2 = open('foobar4.txt', 'w')
f2.writelines(k)
f2.close()
4

3 に答える 3

1

rfindあなたの友達です。

>>> input = '- //components/rel/bt.wcnss/2.4/wcnss_proc/bt/platform/rom/inc/oi_sbc_tables-generated.h#1 - branch change 700801 (text)'
>>> output = input[:input.rfind('-')]
>>> print output
- //components/rel/bt.wcnss/2.4/wcnss_proc/bt/platform/rom/inc/oi_sbc_tables-generated.h#1 

既知のバグ:

  • その「コメント文字列」がない場合は、別の場所 (例: at tables-generated)で問題なく切り捨てられます。
  • 文字列にダッシュがまったくない場合、入力が 1 文字切り捨てられます (スライスは になりますinput[:-1])
于 2013-10-28T23:42:06.167 に答える
1

貪欲な正規表現はどうですか:

import re
original_string = u'//components/rel/bt.wcnss/2.4/wcnss_proc/bt/platform/rom/inc/oi_sbc_tables-generated.h#1 - branch change 700801 (text)'
match = re.match(r'(.*)-', original_string).groups()
if match:
    new_string = match.groups()[0]
于 2013-10-28T23:43:16.733 に答える