如何在python中将字符串拆分为多个部分?

Ryf*_*lex 2 python string split python-2.7

我在按列出的顺序,姓名和考试成绩分割我的名字时遇到了问题.

我在我的代码print repr(names)中执行了以下操作:在循环中获取以下6行数据

'1 Name 559/1 '
'2 Name 484/1 '
'3 Name N'ame 444/2 '
'4 Name 400/1 '
'5 Name Name 928/5 '
'6 Name Name-Name 1292/10 '
Run Code Online (Sandbox Code Playgroud)

我希望能够将它们分开但我得到一个错误说 AttributeError: 'str' object has no attribute 'lsplit'

我有一个使用lsplit,rsplit和拆分,但我无法让它工作......

在最终结果的名字将变成3个变量:names_index,namenames_score

任何人都知道如何实现这一目标吗?

谢谢 - Hyflex

编辑

for item in listitems:
    if item.find("strong"):
        names = str(item.text)
        names = items .split("\n")
        for name in names:
            clean_name = name.lstrip(" ")
            print repr(clean_name)
            student_number = clean_name.lsplit(" ", 1)
            student_score = clean_name.rsplit(" ", 1)
            #student_name = clean_name.lsplit(" ", 1) # Unsure how to get the last part..
Run Code Online (Sandbox Code Playgroud)

Ter*_*ryA 6

没有str.lsplit因为str.split已经离开了左边.

对于每个字符串,只需调用.split(),您将获得一个列表[names_index, name, names_score]

如果模式是number / words / more numbers,那么您可以使用正则表达式:

>>> import re
>>> filter(None, re.split(r'(\d+) (\w.*) (\d.*)', '1 Name 559/1 '))
['1', 'Name', '559/1 ']
>>> filter(None, re.split(r'(\d+) (\w.*) (\d.*)', '6 Name Name-Name 1292/10 '))
['6', 'Name Name-Name', '1292/10 ']
Run Code Online (Sandbox Code Playgroud)