我是否需要执行以下任务在python中遇到问题。
输入数据:
CH0012012300123476
CH0012012300423458
BXXXXXXX
CH0012012300823987
AXXXXXXX
CH0012012300523234
输出:
423458BXXXXXXX
823987AXXXXXXX
答案 0 :(得分:0)
在Python中,您可以只在行上进行迭代,并在需要时使用next
获取下一行。由于这将转发要迭代的同一迭代器,因此在这种情况下,for
循环不会读取BIC。
s = """CH0012012300123476
CH0012012300423458
BXXXXXXX
CH0012012300823987
AXXXXXXX
CH0012012300523234"""
it = iter(s.splitlines())
for line in it:
if line[10:13] in ["004", "008"]:
print(line[12:] + next(it))
# 423458BXXXXXXX
# 823987AXXXXXXX
请注意,如果该行少于11个字符,则line[10]
可能会引发IndexError
,但切片将仅返回一个空切片。
遍历文件可访问行中的迭代器(包括换行符):
with open(filename) as f:
for line in f:
if line[10:12] == '00' and line[12] in '48':
print(line[12:18], next(f), sep='')
但最后还是和上面一样。