相关疑难解决方法(0)

TypeError:在Python3中写入文件时需要类似字节的对象,而不是'str'

我最近迁移到了Py 3.5.这段代码在Python 2.7中正常工作:

with open(fname, 'rb') as f:
    lines = [x.strip() for x in f.readlines()]

for line in lines:
    tmp = line.strip().lower()
    if 'some-pattern' in tmp: continue
    # ... code
Run Code Online (Sandbox Code Playgroud)

升级到3.5后,我得到了:

TypeError: a bytes-like object is required, not 'str'
Run Code Online (Sandbox Code Playgroud)

最后一行的错误(模式搜索代码).

我已尝试.decode()在语句的任何一侧使用该函数,也尝试过:

if tmp.find('some-pattern') != -1: continue
Run Code Online (Sandbox Code Playgroud)

- 无济于事.

我能够迅速解决几乎所有2:3的问题,但这个小小的陈述让我烦恼.

python string byte file python-3.x

497
推荐指数
10
解决办法
90万
查看次数

将新行追加到旧的csv文件python中

我想在我的旧csv文件中添加一个新行.基本上,每次运行Python脚本时它都会更新.

现在我将旧的csv行值存储在列表中,然后删除csv文件并使用新的列表值再次创建它.

想知道有没有更好的方法来做到这一点.

python csv append writer

174
推荐指数
8
解决办法
33万
查看次数

使用Python列表中的值创建.csv文件

我正在尝试使用Python列表中的值创建.csv文件.当我打印列表中的值时,它们都是unicode(?),即它们看起来像这样

[u'value 1', u'value 2', ...]
Run Code Online (Sandbox Code Playgroud)

如果我遍历列表中的值,即for v in mylist: print v它们看起来是纯文本.

我可以,在每个之间放一个print ','.join(mylist)

我可以输出到文件,即

myfile = open(...)
print >>myfile, ','.join(mylist)
Run Code Online (Sandbox Code Playgroud)

但是我想输出到CSV并且在列表中的值周围有分隔符,例如

"value 1", "value 2", ... 
Run Code Online (Sandbox Code Playgroud)

我找不到一种简单的方法来在格式中包含分隔符,例如我已经尝试了join语句.我怎样才能做到这一点?

python csv xlrd

155
推荐指数
9
解决办法
52万
查看次数

以Python形式将标头添加到csv文件中

我编写了一个合并两个csv文件的Python脚本,现在我想在最终的csv中添加一个标题.我尝试按照此处报告的建议,我收到以下错误:expected string, float found.什么是解决这个问题的最pythonic方法?

这是我正在使用的代码:

import csv

with open('combined_file.csv', 'w', newline='') as outcsv:
    writer = csv.DictWriter(outcsv, fieldnames = ["Date", "temperature 1", "Temperature 2"])
    writer.writeheader()

    with open('t1.csv', 'r', newline='') as incsv:
        reader = csv.reader(incsv)
        writer.writerows(row + [0.0] for row in reader)

    with open('t2.csv', 'r', newline='') as incsv:
        reader = csv.reader(incsv)
        writer.writerows(row[:1] + [0.0] + row[1:] for row in reader)
Run Code Online (Sandbox Code Playgroud)

python csv header

64
推荐指数
3
解决办法
16万
查看次数

Python - 向数据帧添加行的有效方法

从这个问题和其他问题看来,似乎不建议使用concatappend构建一个pandas数据帧,因为它每次都在重新复制整个数据帧.

我的项目涉及每30秒检索一小部分数据.这可能会持续3天的周末,因此有人可以轻易地期望一次创建超过8000行.向此数据框添加行的最有效方法是什么?

python numpy dataframe pandas

24
推荐指数
4
解决办法
2万
查看次数

将已排序元组的列表另存为CSV

我有一个按值排序的元组列表.它们的形式(name,count)是count是每个唯一名称的出现次数.

我想取这个列表并将其转换为CSV,其中每个名称都是列标题,每个值都是单行的列值.

有什么建议怎么办?谢谢.

python csv tuples

23
推荐指数
2
解决办法
5万
查看次数

如何附加到CSV文件?

使用Python附加CSV文件,我每隔一行获取一次数据.我该如何解决?

import csv

LL = [(1,2),(3,4)]

Fn = ("C:\Test.csv")
w = csv.writer(open(Fn,'a'), dialect='excel')
w.writerows(LL)
Run Code Online (Sandbox Code Playgroud)

C:\test.csv 打开时看起来像这样:

1,2

3,4

1,2

3,4
Run Code Online (Sandbox Code Playgroud)

python csv

13
推荐指数
2
解决办法
4万
查看次数

Python ASCII编解码器在写入CSV期间无法编码字符错误

我不完全确定我需要对此错误做些什么.我认为它与需要添加.encode('utf-8')有关.但我不完全确定这是我需要做的,也不应该在哪里应用.

错误是:

line 40, in <module>
writer.writerows(list_of_rows)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2013' in position 1
7: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

这是我的python脚本的基础.

import csv
from BeautifulSoup import BeautifulSoup

url = \
'https://dummysite'

response = requests.get(url)

html = response.content

soup = BeautifulSoup(html)

table = soup.find('table', {'class': 'table'})

list_of_rows = []
for row in table.findAll('tr')[1:]:
list_of_cells = []
for cell in row.findAll('td'):
    text = cell.text.replace('[','').replace(']','')
    list_of_cells.append(text)
list_of_rows.append(list_of_cells)

outfile = open("./test.csv", "wb")
writer = csv.writer(outfile)
writer.writerow(["Name", "Location"])
writer.writerows(list_of_rows)
Run Code Online (Sandbox Code Playgroud)

python csv url beautifulsoup utf-8

8
推荐指数
1
解决办法
1万
查看次数

用于打开或创建的 Python open() 标志

Python 3 中open(..., mode)的模式是什么,它打开一个文件

  • 如果不存在则创建
  • 不要截断
  • 二进制模式

我测试过r+b,但在丢失文件时失败,w+b截断它,并且a+b似乎将所有写入转换为附加,而我需要覆盖一些数据。

file mode python-3.x

8
推荐指数
1
解决办法
8846
查看次数

Python:仅将文件的内容转换为大写字符

我试图将一组文件的内容转换为仅大写字符.继承了我到目前为止的代码:

import os

def test():
    os.chdir("C:/Users/David/Files")
    files = os.listdir(".")
    for x in files:
        inputFile = open(x, "r")
        content = inputFile.read()
        with open(x, "wb") as outputFile:
                str.upper(content)
Run Code Online (Sandbox Code Playgroud)

当我运行它时它会删除文件的内容.

python

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

python ×9

csv ×6

file ×2

python-3.x ×2

append ×1

beautifulsoup ×1

byte ×1

dataframe ×1

header ×1

mode ×1

numpy ×1

pandas ×1

string ×1

tuples ×1

url ×1

utf-8 ×1

writer ×1

xlrd ×1