[英]How can I split a string into multiple parts in python?
我在按列出的顺序,姓名和考试成绩分割我的名字时遇到了问题。
我在我的代码中执行了以下操作:在循环中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 '
我希望能够拆分它们但是我得到一个错误说AttributeError: 'str' object has no attribute 'lsplit'
我有一个使用lsplit,rsplit和拆分,但我无法让它工作......
最后,结果名称将变为3个变量: names_index
, name
和names_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..
没有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 ']
rsplit返回分割结果,而不仅仅是最后一部分。 所以你实际上正朝着正确的方向前进。
对于您的名称中可能包含空格的代码,您可以执行以下操作:
the_string = the_string.strip()
[id, name_score] = the_string.split(' ',1) # Split into ['1', 'name name 654/1']
[name, score] = name_score.rsplit(' ',1) # Split into ['name name','654/1']
因此,对于输入“6 Name Name-Name 1292/10”,您的预期值已经存在:
id # this is '6'
name # this is 'Name Name-name'
score # this is '1292/10'
它很简单 -
>>> s = '4 Name 400/1 '
>>> names_index, name, names_score = s.split()
>>> names_index, name, names_score
('4', 'Name', '400/1')
>>>
正如Haidro所说,没有lsplit的功能,而是使用split。
你可以用你的清单这样操作
>>> names = ['1 Name 559/1 ',
'2 Name 484/1 ',
'3 Name Naaame 444/2 ',
'4 Name 400/1 ',
'5 Name Name 928/5 ',
'6 Name Name-Name 1292/10 ']
>>> names_lst=[]
>>> for n in names:
names_lst+=n.split()
给
>>> names_lst
['1', 'Name', '559/1', '2', 'Name', '484/1', '3', 'Name', 'Naaame',
'444/2', '4', 'Name', '400/1', '5', 'Name', 'Name', '928/5', '6', 'Name',
'Name-Name', '1292/10', ['1', 'Name', '559/1'], ['2', 'Name', '484/1'],
['3', 'Name', 'Naaame', '444/2'], ['4', 'Name', '400/1'],
['5', 'Name', 'Name', '928/5'], ['6', 'Name', 'Name-Name', '1292/10']]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.