我想做的是转换我的变量:
table = "female\tIngelin\tAleksandersen\nmale\tJohnny\tDigre\nmale\tOsman\tBremseth\nfemale\tCathrine\tDagestad\nfemale\tTirill\tBakker"
成为这样的一种方案:
该列表很长,因此请停在5,但是您明白了。 到目前为止,我的代码:
table="female\tIngelin\tAleksandersen\nmale\tJohnny\tDigre\nmale\tOsman\tBremseth\nfemale\tCathrine\tDagestad\nfemale\tTirill\tBakker"
def show_table():
print(table)
def show_every_cell():
col = -1
row = -1
names = table.split("\t")
for x in names:
row += 1
if row == 0:
col += 1
if col == 0:
print('Row: 0 Col: 0 ' + 'Cell value: ' + x)
if col == 1:
print('Row: 0 Col: 1 ' + 'Cell value: ' + x)
if col == 2:
print('Row: 0 Col: 2 ' + 'Cell value: ' + x)
if row == 1:
col += 1
if col == 0:
print('Row: 1 Col: 0 ' + 'Cell value: ' + x)
if col == 1:
print('Row: 1 Col: 1 ' + 'Cell value: ' + x)
if col == 2:
print('Row: 1 Col: 2 ' + 'Cell value: ' + x)
#The list continues with row: 2, 3 and 4. But no point in showing that part.
def main():
show_table()
show_every_cell()
if __name__ == "__main__":
main()
我的输出是这样:
Row: 0 Col: 0 Cell value: female
Row: 1 Col: 1 Cell value: Ingelin
如您所见,它错过了很多。...
答案 0 :(得分:2)
扩大我的评论:
在打印新行之前,您永远不会重置col。但这是一个不重复自己的典型例子-而不是重复编写几乎相同的代码4次,为什么不使用循环?
要重现您的输出,可以以此为起点:
*q = p;
这是两个嵌套循环,它们在使用enumerate
自动计数相应位置的同时遍历输入。
请注意,split
函数已使用两次:一次在换行符(for rowno, row in enumerate(table.split("\n")):
for colno, cell in enumerate(row.split("\t")):
print("Row: {}, Col: {}, Cell value: {}".format(rowno, colno, cell))
)上拆分以获取每一行,然后在每个单元格的标签(\n
)上拆分。< / p>
由于这看起来非常像一个csv文件,因此请查看csv-module。
答案 1 :(得分:0)
您应该尝试嵌套的for
循环。
...
for x in names:
for row in range(number_of_rows):
for col in range(number_of_cols):
print('Row: ' + row + 'Col: ' + col + 'Cell value: ' + x)