在python中以所需格式排列列表的字符串

在python中以所需格式排列列表的字符串,python,list,Python,List,实际上,我正在使用scrapy解析一些html页面,我使用了xpath并从一些html标记中获取了一些地址,结果如下所示 result = ["Hno 4-50, Plot No 301, Swathi Pooja Homes,Beside Rajadhani Theater, Vikas Nagar,Dilsukhnagar,Hyderabad","Mr Sravan"] 我想加入字符串,所以我在下面做了 final_result = ','.join(result) 得到了如下结果 fi

实际上,我正在使用scrapy解析一些html页面,我使用了xpath并从一些html标记中获取了一些地址,结果如下所示

result = ["Hno 4-50, Plot No 301, Swathi Pooja Homes,Beside Rajadhani Theater, Vikas Nagar,Dilsukhnagar,Hyderabad","Mr Sravan"]
我想加入字符串,所以我在下面做了

final_result = ','.join(result)
得到了如下结果

final_result = "Hno 4-50, Plot No 301, Swathi Pooja Homes,Beside Rajadhani Theater, Vikas Nagar,Dilsukhnagar,Hyderabad,Mr Sravan"
在这里,我们可以看到,
最终结果
(地址)
Sravan先生
中的姓名位于末尾,但一般情况下,姓名应位于任何联系人的门牌号或门牌号之前,对吗?因此,无论加入后列表中的字符串数量如何,我都应在开始时获得姓名,有没有办法做到这一点?有人能告诉我怎么做吗

编辑的代码:

目前我一次解析四个url,所以当我使用xpath(或相关)并从不同的url获取地址时,每个url的结果(例如)如下所示

final_result = ['Addess_2','Newyork', 'Mr T.Jamal(Name)']
               ['Mr T. Jamal(Name)', 'Addres_1','Extra info'] 
               ['Addres_3','Mr T. Jamal(Name)','Extra info','Related scope'] 
               ['Addres_4','Extra info','Mr T. Jamal(Name)','Related info'] 
               ['Addres_5','Extra info','Related info']  # No name
               ['Addres_6','Extra info1','Related info1']  # No name

这里是解析地址中的所有URL,如果您想编写适用于上述所有列表的代码,您可以这样做:

final_result = ','.join(result[-1:] + result[:-1])


>>> 'Mr Sravan,Hno 4-50, Plot No 301, Swathi Pooja Homes,Beside Rajadhani Theater, Vikas Nagar,Dilsukhnagar,Hyderabad'
result = ["is", "now", "the name", "at", "first", "place", ":)"]
i = 2
' '.join(result[i:i+1] + result[:i] + result[i+1:])
'the name is now at first place :)'
编辑: 在您的评论之后,如果您知道名称位于秩
i
,可以这样做:

final_result = ','.join(result[-1:] + result[:-1])


>>> 'Mr Sravan,Hno 4-50, Plot No 301, Swathi Pooja Homes,Beside Rajadhani Theater, Vikas Nagar,Dilsukhnagar,Hyderabad'
result = ["is", "now", "the name", "at", "first", "place", ":)"]
i = 2
' '.join(result[i:i+1] + result[:i] + result[i+1:])
'the name is now at first place :)'

像这样的怎么样:

  final_result = result[-1] + ', ' + ''.join(result[:-1])
屈服:

Mr Sravan, Hno 4-50, Plot No 301, Swathi Pooja Homes,Beside Rajadhani Theater, Vikas Nagar,Dilsukhnagar,Hyderabad
--更新--

这将在原始列表中的任意位置找到“Mr”字符串,并使其按您想要的方式工作

rs = ','.join(result).split(',')
idx = [i for i,j in enumerate(rs) if j.strip().startswith('Mr')][0]
final_result = (rs[idx] +',' + ','.join(rs[1:idx] + rs[idx+1:])).strip()
print final_result
这适用于OP在更新文章中提供的4个测试字符串

--更新2OP更改问题,使“Mr”可能不在列表中--

此代码将检测Mr是否在列表中,并如上所述将其移到前面。它还将检测它是否不在列表中,并避免索引越界情况。请参见下面的输出

测试字符串:

result = ['Addres_4','Extra info','Mr T. Jamal(Name)','Related info'] 
result = ['Addres_4','Extra info','T. Jamal(Name)','Related info'] 
代码:

产量分别为:

Mr T. Jamal(Name),Extra info,Related info
Addres_4,Extra info,T. Jamal(Name),Related info

我认为如果名称字符串位于列表的末尾,那么这是可行的,但是如果名称在列表中混乱,我的意思是有时名称位于列表的中间,有时位于列表的末尾。。。。所以不管怎么说,这个名字是以Mr@shivakrishna你举的例子中没有中间人。它由两个字符串组成。这是一个错误吗?@shivakrishna如果你知道名字的位置,可能会有所不同。事实上答案是可以接受的,但我已经告诉过我的问题,有几次我在一个列表中有4个字符串,名字在3个位置,在这种情况下该怎么办,所以我很困惑……@Cédric Julien:是的,如果我们知道这个领域的位置,上面所说的是适用的,但有时候斯拉文先生的观点正在改变,因此,我能知道在这种情况下该怎么办吗?如果我们不知道名称在列表中的位置,因为在获取过程中,名称有时会位于列表的中间,并且确定名称以Mr@shivakrishna我刚刚在您的4个测试字符串上运行了我的代码,它起了作用。当我运行我的完整代码时,但有时在idx下idx=[i代表i,j在枚举(rs)中,如果j.strip().startswith('Mr')][0]异常。索引器错误:列表索引超出范围是displaying@shivakrishna4个测试字符串中的任何一个都没有出现这种情况,对吗?请确保列表中有一个“Mr”。您能显示出出现问题的列表吗?@Levon:是的,您是对的(不介意我不断地问问题)现在的问题是,有时候列表中没有名字,所以显示列表索引时出错。对于带有字符串的列表,这种方法工作得很好,但如果没有以Mr开头的名字,它将显示列表索引超出范围的错误,对吗?如果“Mr”是否不在列表中?此外,这是对原始问题的第三个有点不寻常的更改。在某个时候,您可能想发布一个新问题:)好的,这是最终问题,我不会再次更改问题,如果列表中没有名称,只需打印剩余的字符串。