小编tnk*_*epp的帖子

替换单个换行符,保留倍数

我正在解析一个文本文件并希望删除所有段落内换行符,同时实际保留形成新段落的双换行符。例如

这是我的第一首诗\n没有意义\n它应该走多远\n没有人知道。\n\n这里有几秒钟\n没有那么长\n再见\n\n

打印出来后,它应该是这样的:

This is my first poem
that does not make sense
how far should it go
nobody can know.

Here is a seconds
that is not as long
goodbye
Run Code Online (Sandbox Code Playgroud)

应该成为

这是我的第一首诗,没有人知道它应该走多远。\n\n这是一个没有那么长的再见\n\n

同样,打印时,它应该如下所示:

This is my first poem that does not make sense how far should it go nobody can know.

Here is a seconds that is not as long goodbye
Run Code Online (Sandbox Code Playgroud)

这里的技巧是删除 '\n' 的单次出现,同时保留双换行符 '\n\n',并保留空白(即“hello\nworld”变成“hello world”而不是“helloworld”) .

我可以通过首先用一个虚拟字符串(如“ $ $ $ ”或同样荒谬的东西)替换 \n\n ,然后删除 \n 然后将“ $ $ $ …

python regex python-3.x

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

Python matplotlib 作为 cron 作业运行时出现 QxcbConnection 错误

我有一个绘图脚本,计划作为 cron 作业运行,但抛出错误。该脚本是用Python 3.5编写的,下面给出了一个示例。

import pylab as pl

fig = pl.figure(figsize=(4, 4))
ax = fig.add_supblot(111)

ax.plot(range(10), range(10))
Run Code Online (Sandbox Code Playgroud)

我通过以下行在 bash 脚本中调用它: ~/anaconda3/bin/ipython test.py

我的 cron 报告中出现以下错误:

QXcbConnection: Could not connect to display 
/datadrive/cronjobs/test.sh: line 2:  1459 Aborted (core dumped) ~/anaconda3/bin/python ~/Desktop/test.py
Run Code Online (Sandbox Code Playgroud)

我什至尝试直接从 crontab 调用,但得到了同样的错误。

我已确认可以从终端运行该脚本。这两者都有效:

$ ~/anaconda3/bin/ipython ~/Desktop/test.py
$ bash /datadrive/cronjobs/test.sh
Run Code Online (Sandbox Code Playgroud)

似乎 matplotlib 不喜欢在 cron 下运行,但我不明白为什么。有谁知道这是为什么以及如何解决它?

python bash cron matplotlib

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

在pandas.DataFrame.to_csv中编写多个标题行

我将我的数据放入NASA的ICARTT格式进行存档.这是一个逗号分隔的文件,有多个标题行,标题行中有逗号.就像是:

46, 1001
lastname, firstname
location
instrument
field mission
1, 1
2011, 06, 21, 2012, 02, 29
0
Start_UTC, seconds, number_of_seconds_from_0000_UTC
14
1, 1
-999, -999
measurement name, units
measurement name, units
column1 label, column2 label, column3 label, column4 label, etc.
Run Code Online (Sandbox Code Playgroud)

我必须为收集数据的每一天制作一个单独的文件,因此我最终将创建大约30个文件.当我通过pandas.DataFrame.to_csv创建一个csv文件时,我不能(据我所知)在写入数据之前简单地将标题行写入文件,所以我不得不欺骗它来做我想做的事情

# assuming <df> is a pandas dataframe
df.to_csv('dst.ict',na_rep='-999',header=True,index=True,index_label=header_lines)
Run Code Online (Sandbox Code Playgroud)

其中"header_lines"是标题字符串

这给我的正是我想要的,除了"header_lines"被双引号括起来.有没有办法使用to_csv将文本写入csv文件的头部或删除双引号?我已经尝试在to_csv()中设置quotechar =''和doublequote = False,但双引号仍然出现.

我现在正在做什么(它现在有效,但我想转向更好的东西)只是通过打开('dst.ict','w')打开一个文件并逐行打印到该行,这是很慢.

csv python-2.7 pandas

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

如何使用 isinstance 测试所有可能的整数类型

使用整数时,有多种可用类型(例如 int、numpy.int8、numpy.int16 等)。如果我编写一个通用函数,要求一个变量为整数,我如何针对 Python/numpy 中所有可能的“整数”类型测试该类型?关于浮动也可以提出同样的问题。我最初是这么想的

isinstance(np.int64(5), int)
Run Code Online (Sandbox Code Playgroud)

会/应该起作用,但事实并非如此。

有没有办法可以测试所有可用整数类型的整数变量?

python types numpy isinstance python-3.x

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

CUDA 编程是否从 C 变为 C++?

在深入研究 CUDA 编程之前,我需要先定位自己。NVIDIA CUDA 编程指南在版本 10.1 和 10.2 之间进行了明显的更改,从“CUDA C”改为“CUDA C++”。由于这是一个较小的版本更改,我怀疑这只是语义。我比较了 10.1 之前和 10.2 之后的示例代码,发现没有区别......但这并不意味着没有区别。这些版本之间是否存在更微妙的编程范式转变?

我的怀疑是:CUDA 一直是 C++ 的扩展,而不是 C,但每个人都将其称为 CUDA C,因为我们在编写 CUDA 代码时没有利用 C++ 提供的 OOP。这是一个公平的评价吗?

cuda

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

IDL与Python Float

我一直在将IDL代码翻译成Python,并注意到最终产品的差异.这些差异也不容忽视(例如,通过IDL我获得19.03而Python获得19.16).我确认这两个脚本产生相同的值(它们通常在第四,第五或第六个十进制中不同),直到我开始执行多个数组操作.我怀疑精度可能是原因(Python和IDL数组都是type=FLOAT).我做了一个简单的实验,我也看到了很大的差异.

IDL

a = 0.01
b = 0.0

for r = 1,1000 do begin
   b += a
endfor
c = a * 1000

print,b
    >>> 10.0001
print,c
    >>> 10.0000
Run Code Online (Sandbox Code Playgroud)

蟒蛇

a = 0.01
b = 0.00

for r in range(1000):
    b += a
c = a * 1000

print(b)
    >>> 9.999999999999831
print(c)
    >>> 10.0
Run Code Online (Sandbox Code Playgroud)

当然,在这个例子中,差异仍然很小,但是Python显然比IDL更接近真相.我期望结果是相同的,因为两种语言都使用FLOAT精度.底线是错误以不同的方式在两种语言中传播,从而产生不同的结果.我的问题是:

  1. 两种语言之间的精确度是否存在差异(即,在IDL中FLOAT与在Python中的意义相同,我认为它确实如此)?

  2. 有没有办法调和精度差异?

  3. 我对IDL没有多少经验; 我错过了一些明显的东西吗

PS:

当我写这篇文章时突然出现.我看到与OP相同的问题(Python是正确的).

IDL

>>> 3015/0.0002529821940697729
>>> 11917835.
Run Code Online (Sandbox Code Playgroud)

蟒蛇

>>> 3015/0.0002529821940697729
>>> 11917834.814763514
Run Code Online (Sandbox Code Playgroud)

python precision idl-programming-language

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