在python的csv模块中,有一个函数被调用csv.reader,它允许你遍历一行,返回一个reader对象,并且可以保存在像列表这样的容器中.
因此,当列表分配给变量并打印时,即:
csv_rows = list(csv.reader(csvfile, delimiter=',', quotechar='|'))
print (csv_rows)
>
>
>
[['First Name', 'Last Name', 'Zodicac', 'Date of birth', 'Sex'] # I gave an example of the function outputting a header row
Run Code Online (Sandbox Code Playgroud)
到目前为止,我没有在openpyxl中看到类似的功能.我可能会弄错,所以我想知道你们中是否有人可以帮助我.
更新
@alecxe,您的解决方案完美无缺(除了将我的出生日期作为日期时间格式而不是常规字符串).
def iter_rows(ws):
for row in ws.iter_rows():
yield [cell.value for cell in row]
>
>
>>> pprint(list(iter_rows(ws)))
[['First Nam', 'Last Name', 'Zodicac', 'Date of birth', 'Sex'], ['John', 'Smith', 'Snake', datetime.datetime(1989, 9, 4, 0, 0), 'M']]
Run Code Online (Sandbox Code Playgroud)
由于我是初学者,我想知道如果我使用for循环而不是列表理解,这将如何工作.
所以我用过这个:
def iter_rows(ws):
result=[]
for row in …Run Code Online (Sandbox Code Playgroud) 如果我尝试打印作为列表的类变量,我会得到一个Python对象.(这些是我在stackoverflow上找到的例子).
class Contacts:
all_contacts = []
def __init__(self, name, email):
self.name = name
self.email = email
Contacts.all_contacts.append(self)
def __str__(self):
return '%s, <%s>' % (self.name, self.email)
c1 = Contacts("Grace", "something@hotmail.com")
print(c1.all_contacts)
[<__main__.Contact object at 0x0287E430>, <__main__.Contact object`
Run Code Online (Sandbox Code Playgroud)
但在这个更简单的例子中,它实际上打印:
class Example():
samplelist= [1,2,3]
test= Example()
print (test.samplelist)
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
我认为这一行是罪魁祸首:Contact.all_contacts.append(self)在第一个示例代码中.但我不确定这里发生了什么.
编辑:
一些用户告诉我只是附加self.name而不是仅仅self.
所以当我这样做时:
class Contacts:
all_contacts = []
def __init__(self, name, email):
self.name = name
self.email = email
Contacts.all_contacts.append(self.name)
Contacts.all_contacts.append(self.email)
def __str__(self):
return '%s, <%s>' …Run Code Online (Sandbox Code Playgroud) 我想Dew_P Temp (C)从初始值-3.9 找到pct_change .我想在新专栏中使用pct_change.
来源:
weather = pd.read_csv('https://raw.githubusercontent.com/jvns/pandas-cookbook/master/data/weather_2012.csv')
weather[weather.columns[:4]].head()
Date/Time Temp (C) Dew_P Temp (C) Rel Hum (%)
0 2012-01-01 -1.8 -3.9 86
1 2012-01-01 -1.8 -3.7 87
2 2012-01-01 -1.8 -3.4 89
3 2012-01-01 -1.5 -3.2 88
4 2012-01-01 -1.5 -3.3 88
Run Code Online (Sandbox Code Playgroud)
我已尝试过for循环的变体(甚至可以添加此处显示的索引),但无济于事:
for index, dew_point in weather['Dew_P Temp (C)'].iteritems():
new = weather['Dew_P Temp (C)'][index]
old = weather['Dew_P Temp (C)'][0]
pct_diff = (new-old)/old*100
weather['pct_diff'] = pct_diff
Run Code Online (Sandbox Code Playgroud)
我认为问题是weather['pct_diff'],它不需要new它采用数据帧的最后一个值并从中减去它old
所以它总是(2.1-3.9)/3.9*100因此我的百分比变化总是-46%.
我想要的最终结果是:
Date/Time Temp …Run Code Online (Sandbox Code Playgroud) 我还没有找到很多关于使用 Python 创建受密码保护的 Excel 文件的主题。
在 Openpyxl 中,我确实找到了一个SheetProtection使用以下模块的模块:
from openpyxl.worksheet import SheetProtection
但是,问题是我不确定如何使用它。这不是Workbookor的属性, Worksheet所以我不能这样做:
wb = Workbook()
ws = wb.worksheets[0]
ws_encrypted = ws.SheetProtection()
ws_encrypted.password = 'test'
...
Run Code Online (Sandbox Code Playgroud)
有谁知道这样的请求是否可以用 Python 实现?谢谢!
我目前正在尝试比较2个数据集:
dict1 = {'a':1, 'b':2, 'c':3}
dict2 = {'a':1, 'b':2, 'c':4}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我希望输出类似于:
set1 = set([('c', 4), ('c',3)])
Run Code Online (Sandbox Code Playgroud)
因为他们的键匹配但值不匹配.
我尝试使用交集和差异运算符进行了一系列的理解,但是我无法获得所需的输出.
任何帮助表示赞赏.
我已经看到一些使用dateutil模块执行此操作的方法,但有没有办法在不使用内置库的情况下执行此操作?
例如,现在的当月是7月.我可以使用该datetime.now()功能完成此操作.
python返回上个月最简单的方法是什么?
所以我想在另一个列表中找到第2,第3和第4个元素.
position = [2,3,4]
Sample_List = ['a','b','c','d','e']
Run Code Online (Sandbox Code Playgroud)
循环将返回结果:
['c','d','e']
Run Code Online (Sandbox Code Playgroud)