ファイルオブジェクト'item'からテキストをフォーマットするために次の関数を書いています。
def clean(item):
lines = open(str(item)).readlines()
outp = []
switch = 1
for line in lines:
line = line.strip()
if line:
line = re.sub(' +', ' ', line)
if '%' in line:
line = line.replace('%', ' per cent')
if line.startswith('Note'):
switch = 2
if line.startswith('l\t'):
line = line.split('\t')
line[0] = '<@01_bullet_point>l<@$p>'
line = '\t'.join(line)
outp.append(get_prefix(switch,1) + line)
else:
outp.append(get_prefix(switch,2) + line)
outp.append('\n')
return ''.join(outp)
TypeErrorが発生します:+のサポートされていないオペランドタイプ:'NoneType'および'str'
私は解決策をグーグルで探しましたが、http: //www.skymind.com/~ocrow/python_string/を見つけました。その解決策4は、私が正しい方向に進んでいることを確認しているようです。
これが参照している他の関数が機能していることが確認されているので、問題はここにあるはずですが、関連するSOの質問を見つけて、Pythonのコピーを簡単に確認したところ、なぜ私がエラーが発生します。私の最善の推測は可変スコープと関係があることでしたが、それを見ることができず、繰り返しますが、検索しても同じ問題として理解できるものは何も見つかりませんでした。明らかな何かが欠けていると思いますが、どんな助けでも大歓迎です。
get_prefixの編集は次のとおりです。
def get_prefix(section, type):
if section == 1:
if type == 1:
prefix = '@01_bullets:'
elif type == 2:
prefix = '@04_section_sub_subhead:'
else:
prefix = '@06_body_text:'
else:
if type == 2:
prefix = '@14_notes_sub_sub_heading:'
else:
prefix = '@16_notes_text:'
return prefix
Noneがどのように返されるかわかりません。
完全なトレースバックは次のとおりです。
File "rep_builder.py", line 65, in <module>
`rep.write(clean(item))`
File "rep_builder.py", line 36, in clean
`outp.append(get_prefix(switch,2) + line)`
TypeError: unsupported operand types for +: 'NoneType' and 'str'
更新が遅くなってすみません、接続できない2台のマシンで作業しています(長い話)。