怎么将str文字"-"编号," "空格为一个集合{},print成这样?


# 将流行歌曲编号,空格为{}符号

str ='''
流行歌曲歌词批判导论

- 如果我变成回忆
不想死问题 没人记得问题 自己变得不重要问题
- 给我一首歌的时间
给予问题 AB互动问题 时间与环境、处境与局限 规划问题
- 不能在爱了
组合系统 可以再爱了的问题 心灵与选择
'''


# print

'''
流行歌曲批判导论

1.如果我变成回忆
{不想死问题}{没人记得问题}{自己变得不重要问题}

2.给我一首歌的时间
{给予问题}{AB互动问题}{时间与环境,局限}{规划问题}

3.不能在爱了
{组合系统}{可以再爱了的问题}{心灵与选择}
'''

str是内置函数名,不要用它作变量名,用str1比较好:

>>> str1 ='''
流行歌曲歌词批判导论
- 如果我变成回忆
不想死问题 没人记得问题 自己变得不重要问题
- 给我一首歌的时间
给予问题 AB互动问题 时间与环境、处境与局限 规划问题
- 不能在爱了
组合系统 可以再爱了的问题 心灵与选择
'''
>>> lst = str1.splitlines()
>>> for i,txt in enumerate(lst[1:],1):
    if '- ' in txt:
        lst[i]=lst[i].replace('- ','\n'+str(i//2)+'.')
    else:
        if i>1:lst[i]='{'+lst[i].replace(' ','}{')+'}'

        
>>> print('\n'.join(lst))

流行歌曲歌词批判导论

1.如果我变成回忆
{不想死问题}{没人记得问题}{自己变得不重要问题}

2.给我一首歌的时间
{给予问题}{AB互动问题}{时间与环境、处境与局限}{规划问题}

3.不能在爱了
{组合系统}{可以再爱了的问题}{心灵与选择}

1、使用split(‘\n’)拆分。
2、对不同的行采取不同转化策略。
3、注意原始str最好重命名,str是python 内置名称。

list_s = str_old.split('\n')
count = 1
for s in list_s:
    if s == "":
        print(s)
    elif s[0] == '-':
        print(f"{count}.{s[2:]}")
        count += 1
    elif s.find(' ') == -1:
        print(s)
    else:
        temp = s.split(' ')
        temp_str = ""
        for i in temp:
            temp_str += "{" + i + "}"
        print(f"{temp_str}")