我正在尝试编写一个查看.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)
相信这里的所有人甚至可以让我达到这一点.
说我有这样的文件:
+jaklfjdskalfjkdsaj
fkldsjafkljdkaljfsd
-jslakflkdsalfkdls;
+sdjafkdjsakfjdskal
Run Code Online (Sandbox Code Playgroud)
我只想查找并计算在此文件中开始-的行后面紧跟一行开头的次数+.
规则:
例如,我可以弄清楚如何在Python脚本中执行此操作,但我从来没有在Bash中做过这么广泛的事情.
任何人都可以帮我吗?我认为它最终会成为grep,perl或者也许是一个有才能的sed线 - 但这些是我仍在学习的东西.
谢谢你们!
我知道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) 我正在编写一个家庭作业的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) 我正在使用一个程序(如下)来查看两个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) 我有一个包含字符串列表的文本文件.
我想在.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) 非家庭作业
我有浮动列表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.
如果我能更清楚,请告诉我.