Python 使用format函数无法获取所需内容

Python 使用format函数无法获取所需内容,python,csv,Python,Csv,嗯。我有一个CSV,我正在尝试使用format函数来重新排列列数据的打印顺序 换句话说,如何使用format函数以e、d、c的顺序而不是默认的c、d、e的顺序打印列 以下是我目前掌握的情况: for row in books: print [item.upper() for item in row] print [format(item[]) 我在这里遗漏了什么?如果要更改列的顺序,可以执行以下操作: for row in books: print list(re

嗯。我有一个CSV,我正在尝试使用format函数来重新排列列数据的打印顺序

换句话说,如何使用format函数以e、d、c的顺序而不是默认的c、d、e的顺序打印列

以下是我目前掌握的情况:

for row in books:


    print [item.upper() for item in row]

    print [format(item[])

我在这里遗漏了什么?

如果要更改列的顺序,可以执行以下操作:

for row in books:
    print list(reversed(row))  # Prints the reversed row, as a list
    print ', '.join(reversed(row))  # Prints a single string of comma-separated values
    print [row[index] for index in (2, 0, 1)]  # General order change
    print ', '.join(row[index] for index in (2, 0, 1))  # Same thing, but prints a string

如果要更改列的顺序,可以执行以下操作:

for row in books:
    print list(reversed(row))  # Prints the reversed row, as a list
    print ', '.join(reversed(row))  # Prints a single string of comma-separated values
    print [row[index] for index in (2, 0, 1)]  # General order change
    print ', '.join(row[index] for index in (2, 0, 1))  # Same thing, but prints a string
格式化字符串 我不知道你想要什么,但这可能适合你的需要:

>>> my_items = ['c', 'd', 'e']
>>> print '{2} {1} {0}'.format(*my_items)
e d c
它使用格式,允许您按自己喜欢的顺序打印项目。更多信息,请参阅

撤销清单 如果只想颠倒数组的顺序,只需在列表名称后括号内为“步骤”部分提供
-1

>>> my_items = ['c', 'd', 'e']
>>> my_items[::-1]
['e', 'd', 'c']
因此,您的代码可能如下所示:

for row in books:
    print [item.upper() for item in row[::-1]]
它将打印一行中的大写项目列表,但顺序相反。

格式化字符串 我不知道你想要什么,但这可能适合你的需要:

>>> my_items = ['c', 'd', 'e']
>>> print '{2} {1} {0}'.format(*my_items)
e d c
它使用格式,允许您按自己喜欢的顺序打印项目。更多信息,请参阅

撤销清单 如果只想颠倒数组的顺序,只需在列表名称后括号内为“步骤”部分提供
-1

>>> my_items = ['c', 'd', 'e']
>>> my_items[::-1]
['e', 'd', 'c']
因此,您的代码可能如下所示:

for row in books:
    print [item.upper() for item in row[::-1]]

它将以相反的顺序打印一行中的大写项目列表。

将列顺序与输入数据分离是
DictWriter
的一个很好的用途

>>> data = [range(i, i+3) for i in range(5)]
>>> import csv, StringIO
>>> f = StringIO.StringIO()
创建writer,按需要的顺序创建字段

>>> writer = csv.DictWriter(f, ('e', 'd', 'c'))
然后创造一些方法来制作一个有这些键的dict,不管你的输入是什么

>>> def datamap(row):
...     return dict(zip('cde', row))
...
那么,这只是一个正常使用csv编写器的问题。(
writeheader()
只是为了方便起见,我们可以查看列的外观,这绝不是强制性的)


将列顺序从输入数据中分离出来是
DictWriter
的一个很好的用途

>>> data = [range(i, i+3) for i in range(5)]
>>> import csv, StringIO
>>> f = StringIO.StringIO()
创建writer,按需要的顺序创建字段

>>> writer = csv.DictWriter(f, ('e', 'd', 'c'))
然后创造一些方法来制作一个有这些键的dict,不管你的输入是什么

>>> def datamap(row):
...     return dict(zip('cde', row))
...
那么,这只是一个正常使用csv编写器的问题。(
writeheader()
只是为了方便起见,我们可以查看列的外观,这绝不是强制性的)


你为什么要用内置的?你知道它是干什么的吗?这根本不是你想要实现的。你为什么要使用内置的?你知道它是干什么的吗?这根本不是你想要达到的。谢谢塔德克。因此,通过在括号内分配c、d、e值(?),Python知道它们代表CSV?尾数45中的列:如果将CSV行转换为列表,则可以通过索引引用它们,如
{0}
{1}
中的
{0}{1}。格式(*row)
,但如果将行转换为字典,例如
{'cola':'a','colb':'b'}
,然后通过解包您可以通过它们的名称来引用它们:
{cola}{colb}.format(*row)
。这取决于,
row
变量的具体内容。@尾数a45:如果使用,那么您的行可能适合我在前面的注释中提到的第一种情况-
{0}{1}.format(*行)
-是的,大括号内的数字是该列的索引(第一列从
0开始)。再次感谢!我将尝试一下。@尾数A45:不客气。请告诉我结果。谢谢Tadeck。因此,通过指定c、d、e值(?)在括号内,Python知道它们表示CSV?@尾数45中的列:如果将CSV行转换为列表,则可以通过索引引用它们,如
{0}
{1}
中的
{0}{1}。格式(*row)
,但如果将行转换为字典,例如
{cola','colb':'b}
,然后通过解包,您可以通过它们的名称来引用它们:
'{cola}{colb}.format(**row)
。这取决于
row
变量的具体内容。@尾数a45:如果您使用,那么您的行可能适合我在前面的注释中提到的第一种情况-
'{0}{1}'。format(*row)
-是的,方括号内的数字是该列的索引(第一列从
0开始)。再次感谢!我会尝试一下。@尾数45:不客气。请告诉我结果。