我有两个列表
<security:authentication-manager id="authManager" alias="authenticationManager ">
我需要检查电子邮件是否存在,如果存在,请分别将其分配为名称和电子邮件,否则将名称分配给名称并将电子邮件字段留空。在这种情况下,名称和电子邮件具有严格的格式。所以我使用[name1, email1, name2, email2, name3, email3, name4, email4]
[name5, name5, name7]
运算符来定义它是否在电子邮件中。
这是我的代码:
@
此代码的问题是,如果它看到电子邮件完全正常工作,但对于名称字段,它将电子邮件设置为空白。无论如何在Python中这样做?
答案 0 :(得分:1)
for i, x in enumerate(mylist):
if '@' in x and i > 0:
name = mylist[i-1]
email = x
答案 1 :(得分:1)
你没有提到什么是mylist,但我认为它是电子邮件列表,你正在运行它的值来检查电子邮件是否存在(?)< / p>
由于您的列表以name开头,因此您需要检查i + 1并检查mylist是否具有索引i + 1。如果你找到它,那么你将增加i 2次,以防止单独解析名称 - 所以请改用它。
i = 0
while i < len(mylist):
if i + 1 < len(mylist) and '@' in mylist[i+1]:
name = mylist[i]
email = mylist[i+1]
i+=1
else:
email = ''
name = mylist[i]
print(name)
print(email)
i+=1
答案 2 :(得分:0)
您可以考虑将数据放入字典中,其中名称会自动链接到电子邮件(如果存在)。在这里,我更改了您的原始列表,以反映您电子邮件地址中的“@”。
<asp:SqlDataSource ID="SqlDataSourceClothesMen" runat="server"
ConnectionString="Data Source=DESKTOP-1EGF4SE\SQLEXPRESS;Initial Catalog=clickstream;Integrated Security=True"
SelectCommand="select * from [ClothesMen]"></asp:SqlDataSource>
<asp:ListView ID="ListView1" runat="server" DataSourceID="" <!--I'm changing this property-->
GroupItemCount="3">
<LayoutTemplate>
<table style="table-layout:fixed;width:100%">
<tr id="groupPlaceholder" runat="server"></tr>
</table>
</LayoutTemplate>
<GroupTemplate>
<tr>
<td id="itemPlaceholder" runat="server">
</td>
</tr>
</GroupTemplate>
<ItemTemplate>
<td align="center">
<asp:Image runat="server" ImageUrl='<%# Eval("ImageUrl") %>' Height="20%" Width="70%" /><br />
<asp:Label ID="ProductTitleLabel" runat="server" Text='<%# Eval("ProductTitle") %>'></asp:Label><br />
<asp:Label ID="PriceLabel" runat="server" Text='<%# Eval("Price") %>'></asp:Label><br />
</td>
</ItemTemplate>
<GroupSeparatorTemplate>
<tr runat="server">
<td colspan="3"><hr /></td>
</tr>
</GroupSeparatorTemplate>
</asp:ListView>