小编Jam*_*man的帖子

CSV阅读器(Python)中的"行包含NULL字节"

我正在尝试编写一个查看.CSV文件(input.csv)的程序,并仅重写以某个元素(corrected.csv)开头的行,如文本文件(output.txt)中所列.

这就是我的程序现在的样子:

import csv

lines = []
with open('output.txt','r') as f:
    for line in f.readlines():
        lines.append(line[:-1])

with open('corrected.csv','w') as correct:
    writer = csv.writer(correct, dialect = 'excel')
    with open('input.csv', 'r') as mycsv:
        reader = csv.reader(mycsv)
        for row in reader:
            if row[0] not in lines:
                writer.writerow(row)
Run Code Online (Sandbox Code Playgroud)

不幸的是,我一直收到这个错误,我不知道它是什么.

Traceback (most recent call last):
  File "C:\Python32\Sample Program\csvParser.py", line 12, in <module>
    for row in reader:
_csv.Error: line contains NULL byte
Run Code Online (Sandbox Code Playgroud)

相信这里的所有人甚至可以让我达到这一点.

python csv

77
推荐指数
5
解决办法
10万
查看次数

有没有办法找到两个相邻的新行是否以某些单词开头?

说我有这样的文件:

+jaklfjdskalfjkdsaj
fkldsjafkljdkaljfsd
-jslakflkdsalfkdls;
+sdjafkdjsakfjdskal
Run Code Online (Sandbox Code Playgroud)

我只想查找并计算在此文件中开始-的行后面紧跟一行开头的次数+.

规则:

  • 没有外部脚本
  • 必须在bash脚本中完成
  • 必须是内联的

例如,我可以弄清楚如何在Python脚本中执行此操作,但我从来没有在Bash中做过这么广泛的事情.

任何人都可以帮我吗?我认为它最终会成为grep,perl或者也许是一个有才能的sed线 - 但这些是我仍在学习的东西.

谢谢你们!

bash perl grep sed

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

BeautifulSoup KeyError问题

我知道KeyErrors在BeautifulSoup中相当普遍,在你向我大喊RTFM之前,我已经在Python文档和BeautifulSoup文档中做了大量的阅读.现在,除此之外,我仍然不知道KeyErrors正在发生什么.

这是我正在尝试运行的程序,它始终如一地导致URL列表的最后一个元素出现KeyError .

我来自C++背景,只是为了让你知道,但我需要使用BeautifulSoup来工作,在C++中这样做是一个可以想象的噩梦!

我们的想法是返回网站中所有网址的列表,这些网址在其网页上包含指向某个网址的链接.

这是我到目前为止所得到的:

import urllib
from BeautifulSoup import BeautifulSoup

URLs = []
Locations = []
URLs.append("http://www.tuftsalumni.org")

def print_links (link):
    if (link.startswith('/') or link.startswith('http://www.tuftsalumni')):
        if (link.startswith('/')):
            link = "STARTING_WEBSITE" + link
        print (link)
        htmlSource = urllib.urlopen(link).read(200000)
        soup = BeautifulSoup(htmlSource)
        for item in soup.fetch('a'):
            if (item['href'].startswith('/') or 
                "tuftsalumni" in item['href']):
                URLs.append(item['href'])
            length = len(URLs)
            if (item['href'] == "SITE_ON_PAGE"):
                if (check_list(link, Locations) == "no"):
                    Locations.append(link)



def check_list (link, array):
    for x in range (0, len(array)):
        if (link == …
Run Code Online (Sandbox Code Playgroud)

python beautifulsoup

4
推荐指数
1
解决办法
7575
查看次数

无效的写入/读取valgrind错误,在其他问题中找不到解决方案

我正在编写一个家庭作业的C代码,它通过动态的内存段数组复制主内存.

这些内存段来自不同的接口,它本身只是uint32_ts的静态数组.

我的主内存接口叫做heapmem(就像在堆内存中一样),自从交换机以来我一直在获得奇怪的valgrind读/写错误.在咀嚼我之前,我已经进行了研究,并且作为最后的手段来到SO.

这是错误

==30352== Invalid write of size 8
==30352==    at 0x401661: HeapMem_map (heapmem.c:84)
==30352==    by 0x400E74: map (um.c:109)
==30352==    by 0x4010FD: runOpcode (um.c:182)
==30352==    by 0x4011A1: UM_run (um.c:209)
==30352==    by 0x400A71: main (main.c:10)
==30352==  Address 0x4c53b00 is 0 bytes after a block of size 16 alloc'd
==30352==    at 0x4A0610C: malloc (vg_replace_malloc.c:195)
==30352==    by 0x401425: HeapMem_new (heapmem.c:32)
==30352==    by 0x400ABE: UM_new (um.c:31)
==30352==    by 0x400A64: main (main.c:8)
==30352== 
==30352== Invalid read of size 8
==30352==    at 0x401787: HeapMem_put (heapmem.c:114) …
Run Code Online (Sandbox Code Playgroud)

c valgrind

4
推荐指数
1
解决办法
5661
查看次数

为什么Python CSV模块在运行程序后尝试打开时将CSV文件设为只读?

我正在使用一个程序(如下)来查看两个CSV文件之间某些列的相似性,然后在数据匹配某些规范时创建第三个(两列相同但第三列不相同)以便我可以更新e-邮件列表.

但是,当我在运行程序后尝试打开results.csv文件时,Windows Excel将只以只读模式打开程序.

有什么想法吗?

这是我的代码:

import csv

sample_data = open("sample.csv", "r")
lib_data = open("library.csv", "r")
csv1 = csv.reader(sample_data)
csv2 = csv.reader(lib_data)

results = open("results.csv", "w")
res_csv = csv.writer(results)

limit = 1071
limit2 = 1001

x = 0
y = 0

while (y != limit):
    row1 = csv1.__next__()
    while (x != limit2):
        row2 = csv2.__next__()
        if (row1[0] == row2[3] and row1[1] == row2[2] and row1[2] != row2[5]):
            print ("SAMPLE:")
            print (row1[0], ", ", row1[1], ", ", row1[2])
            print ("LIBRARY:")
            print (row2[3], …
Run Code Online (Sandbox Code Playgroud)

python csv

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

这个用于.csv的python程序出了什么问题?

我有一个包含字符串列表的文本文件.

我想在.csv文件中搜索以这些字符串开头的行,并将它们放在一个新的.csv文件中.

在这种情况下,文本文件称为"output.txt",原始.csv为"input.csv",新的.csv文件为"correct.csv".

代码:

import csv

file = open('output.txt')
while 1:
    line = file.readline()
    writer = csv.writer(open('corrected.csv','wb'), dialect = 'excel')
    for row in csv.reader('input.csv'):
        if not row[0].startswith(line):
            writer.writerow(row)
    writer.close()
    if not line:
        break
    pass
Run Code Online (Sandbox Code Playgroud)

错误:

Traceback (most recent call last):
File "C:\Python32\Sample Program\csvParser.py", line 9, in <module>
writer.writerow(row)
TypeError: 'str' does not support the buffer interface`
Run Code Online (Sandbox Code Playgroud)

新错误:

Traceback (most recent call last):
File "C:\Python32\Sample Program\csvParser.py", line 12, in <module>
for row in reader:
_csv.Error: line contains NULL byte
Run Code Online (Sandbox Code Playgroud)

问题是CSV文件是用标签而不是逗号保存的,现在新问题如下:

Traceback …
Run Code Online (Sandbox Code Playgroud)

python csv

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

在Python中迭代并比较lambda中的内容

非家庭作业

我有浮动列表x,我想把它变成列表y,列出所有第十个元素x.

出于我自己的原因,我真的想以很少的线条来做这件事.我提出了这样的事情:

i = 0
y = filter(lambda x: (++i)%10; x)
Run Code Online (Sandbox Code Playgroud)

理论上这应该有效,i已经定义了,并且++i通常会将一个添加到变量i,然后继续表达式.

不幸的是,++Python中不存在.

有任何Pythonic方法可以解决这个问题吗?

我的另一个想法是使用地图,并将表达式push元素放到列表中y.

如果我能更清楚,请告诉我.

python lambda

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

标签 统计

python ×5

csv ×3

bash ×1

beautifulsoup ×1

c ×1

grep ×1

lambda ×1

perl ×1

sed ×1

valgrind ×1