0

我有下面的脚本,它基本上删除了“-”之后的句子,当announce.txt包含以下输入时它会中断,因为它有多个“-”,我基本上想根据最后一个“-”进行拆分。 .please建议如何做到这一点...我有hte预期的输出

输入:- //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 回答
1

拆分

"a-b-c-d".rsplit('-',1)

>>> ['a-b-c', 'd']

-

items = '- //components/rel/bt.wcnss/2.4/wcnss_proc/bt/platform/rom/inc/oi_sbc_tables-generated.h#1 - branch change 700801 (text)'
answer = items.rsplit('-',1);
k.append(answer[0].strip() + '\n')
# print answer[0].strip()
于 2013-10-28T23:43:49.120 回答