Name,Phone,Address
Mike Smith,15554218841,123 Nice St, Roy, NM, USA
Anita Hernandez,15557789941,425 Sunny St, New York, NY, USA
Guido van Rossum,315558730,Science Park 123, 1098 XG Amsterdam, NL
您的输出应该是一个列表:
[
['Mike Smith', '15554218841', '123 Nice St, Roy, NM, USA'],
['Anita Hernandez', '15557789941', '425 Sunny St, New York, NY, USA'],
['Guido van Rossum', '315558730', 'Science Park 123, 1098 XG Amsterdam, NL']
]
input_string = """Name,Phone,Address
Mike Smith,15554218841,123 Nice St, Roy, NM, USA
Anita Hernandez,15557789941,425 Sunny St, New York, NY, USA
Guido van Rossum,315558730,Science Park 123, 1098 XG Amsterdam, NL"""
def string_split_ex(unsplit):
results = []
# Bonus points for using splitlines() here instead,
# which will be more readable
for line in unsplit.split('\n')[1:]:
results.append(line.split(',', maxsplit=2))
return results
print(string_split_ex(input_string))
我们.split()在这里打了两次电话。第一次使用可能看起来很吓人,但别担心!我们将逐步完成它,您会对这些表达式感到满意。让我们再看看第一个.split()调用:unsplit.split('\n')[1:].
第一个元素是unsplit,它只是指向输入字符串的变量。然后我们有我们的.split()电话:.split('\n')。在这里,我们正在拆分一个称为换行符的特殊字符。
有什么作用\n?顾名思义,它告诉正在读取字符串的任何人,它后面的每个字符都应该显示在下一行。在像我们这样的多行字符串中,每行末尾input_string都有一个隐藏\n。
最后一部分可能是新的:[1:]. 到目前为止的语句给了我们一个内存中的新列表,[1:]看起来像一个列表索引符号,它是——有点!这个扩展的索引符号给了我们一个列表 slice。在这种情况下,我们取 index 处的元素1及其后的所有元素,丢弃 index 处的元素0。
总之,我们遍历一个字符串列表,其中每个元素代表多行输入字符串中除了第一行之外的每一行。
在每个字符串中,我们.split()再次调用using,作为拆分字符,但这次我们只使用maxsplit前两个逗号进行拆分,而地址保持不变。然后我们将该调用的结果附加到恰当命名的results数组并将其返回给调用者。
input_list = [
['Boston', 'MA', '76F', '65% Precip', '0.15 in'],
['San Francisco', 'CA', '62F', '20% Precip', '0.00 in'],
['Washington', 'DC', '82F', '80% Precip', '0.19 in'],
['Miami', 'FL', '79F', '50% Precip', '0.70 in']
]
# We start with joining each inner list into a single string
joined = [','.join(row) for row in input_list]
# Now we transform the list of strings into a single string
output = '\n'.join(joined)
print(output)