小编Yu *_*hen的帖子

如何按行号替换文本文件中的整行

我有一种情况,我想要一个bash脚本来替换文件中的整行.行号始终相同,因此可以是硬编码变量.

我不是要替换该行中的一些子字符串,我只想用新行替换该行.

是否有任何bash方法可以执行此操作(或者可以将其放入.sh脚本中的简单方法).

bash text replace sed

137
推荐指数
6
解决办法
24万
查看次数

查找类型为float或特定类型的Pandas中的所有数据框列?

我有一个数据帧,df,有一些类型为float64的列,而其他的是对象.由于混合性质,我不能使用

df.fillna('unknown') #getting error "ValueError: could not convert string to float:"
Run Code Online (Sandbox Code Playgroud)

因为错误发生在类型为float64的列上(这是一个误导性错误消息!)

所以我希望我能做点什么

for col in df.columns[<dtype == object>]:
    df[col] = df[col].fillna("unknown")
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,是否有任何这样的过滤器表达式,我可以使用df.columns?

我想,不太优雅,我能做到:

 for col in df.columns:
        if (df[col].dtype == dtype('O')): # for object type
            df[col] = df[col].fillna('') 
            # still puzzled, only empty string works as replacement, 'unknown' would not work for certain value leading to error of "ValueError: Error parsing datetime string "unknown" at position 0" 
Run Code Online (Sandbox Code Playgroud)

我也想知道为什么在上面的代码中用''with'unknown'替换代码可以用于某些单元但是失败的单元格中出现"ValueError:Error parsing datetime string",错误"位置0"

非常感谢!

python dataframe pandas data-cleaning

42
推荐指数
3
解决办法
4万
查看次数

无法使用marksec和markdown和pandoc?

当我在markdown文档中使用titlesec时如下:

---
header-includes:
    - \usepackage{titlesec}
---
Run Code Online (Sandbox Code Playgroud)

当通过pandoc处理它时,我收到以下错误:

pandoc try.md -o try.pdf
! Argument of \paragraph has an extra }.
<inserted text> 
                \par 
l.1290 \ttl@extract\paragraph

pandoc: Error producing PDF
Run Code Online (Sandbox Code Playgroud)

通过搜索,我找到了以下R-markdown的解决方法: 无法使用自定义样式编织为pdf

我想知道如何使用markdown和YAML标头实现类似的解决方案?

我还发现并验证了以下方法可行:

pandoc --variable=subparagraph try.md -o try.pdf
Run Code Online (Sandbox Code Playgroud)

但这对用户来说更难,因为人们可能会忘记解决方法.

有一些关于解决方法的讨论https://www.bountysource.com/issues/40574981-latex-template-incompatible-with-titlesec,但这超出了我的知识

谢谢你的帮助

pandoc

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

使用Visual Basic在Print语句中避免额外的"回车"?

使用Visual Basic,我对Print语句的行为感到困惑,因为有时候下面的语句:会在一行的末尾引起额外的回车"^ M",但有时,它不会.我想知道为什么?

filePath = "d:\tmp\FAE-IMM-Report-2012-Week.org"
    If Dir(filePath) <> "" Then
        Kill filePath
    End If
    outFile = FreeFile()
    Open filePath For Output As outFile
    Print #outFile, "#+TITLE:     Weekly Report"
Run Code Online (Sandbox Code Playgroud)

会产生

#+TITLE:     Weekly Report^M
Run Code Online (Sandbox Code Playgroud)

虽然我希望没有^ M:

#+TITLE:     Weekly Report
Run Code Online (Sandbox Code Playgroud)

在一个测试程序中,几乎相同的代码不会产生"^ M".

请帮忙!非常感谢.

经过进一步的实验,我发现以下建议使用vbNewline和";" 在打印内容的最后,仍然没有解决我的问题.

仔细隔离之后,我发现问题的原因是一个看起来像空格的字符,而不是空格,接着是换行符和回车符.在打印包含违规字符串的文本之前,没有回车符,但是一旦打印出违规行,那么包括上一行打印在内的每一行都会有回车符.

我不确定违规字符串是什么,因为我的VBA技能还不太好.

以下是电子表格单元格中违规文本的副本:

   "There is something invisible after this visible text 
After the invisible text, then there might be a carriage return $Chr(13) and/or newline"
Run Code Online (Sandbox Code Playgroud)

不过,我不确定粘贴到网络浏览器是否会保留内容.通过粘贴到emacs,我没有看到回车,而emacs应该显示它,如果有的话.所以我猜在违规字符串中没有回车符.

以下是程序演示问题:

    Sub DemoCarriageReturnWillAppear()
    Dim filePath As String
    Dim outFile
    Dim offendingText …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba carriage-return

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

使用类型列表的值展平列,同时在Pandas中相应地复制其他列的值

亲爱的熊猫专家:

我正在尝试实现一个函数来展平具有list类型元素的数据帧的列,我想要数据帧的每一行,其中列具有list类型的元素,所有列但是指定的列将被展平重复,而指定的列将具有列表中的值之一.

以下说明了我的要求:

input = DataFrame({'A': [1, 2], 'B': [['a', 'b'], 'c']})
     A   B
0    1   [a, b]
1    2   c

expected = DataFrame({'A': [1, 1, 2], 'B': ['a', 'b', 'c']}, index=[0, 0, 1])

     A   B
0    1   a
0    1   b
1    2   c
Run Code Online (Sandbox Code Playgroud)

我觉得可能有一个优雅的解决方案/概念,但我正在努力.

这是我的尝试,但尚未奏效.

def flattenColumn(df, column):
    '''column is a string of the column's name.
    for each value of the column's element (which might be a list), duplicate the rest of columns at the correspdonding row with …
Run Code Online (Sandbox Code Playgroud)

python data-manipulation dataframe pandas

7
推荐指数
3
解决办法
7427
查看次数

Emacs Lisp:在函数返回之前使新创建的缓冲区可见?

在emacs Lisp中的以下函数中,

(defun show-life ()
  (interactive)
  (switch-to-buffer "*Life-Window*") ; show how life goes on while living
  (live)) ; it takes 70 years to finish and return!
Run Code Online (Sandbox Code Playgroud)

我想创建缓冲区" Life-Window ",并在实时继续显示由(live)生成的生活事件.

不幸的是,缓冲区仅在(实时)返回后变为可见(当它结束时!)

我也试过pop-to-buffer,行为是一样的.

lisp emacs buffer visibility

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

Clojure:如何在Leiningen/Lighttable环境中明确选择JVM

在我的Windows 7(64位)环境中,我有很多可用的JVM:

C:\Program Files (x86)\Java\j2re1.4.2_12\bin\client\jvm.dll
C:\Program Files (x86)\Java\jre6\bin\client\jvm.dll
D:\programs\Java\jdk1.7.0_45\jre\bin\server\jvm.dll
D:\programs\Java\jre7\bin\server\jvm.dll
Run Code Online (Sandbox Code Playgroud)

目前,使用Lighttable/Leiningen(我不知道哪个选择,以及如何选择)

C:\ Program Files(x86)\ Java\j2re1.4.2_12\bin\client\jvm.dll

但我真的很想尝试

d:\程序\的Java\jdk1.7.0_45\jre的\ BIN \服务器\的jvm.dll

当我输入时,更令人费解的是

java -version

我得到以下内容:

D:\yushen>java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
Run Code Online (Sandbox Code Playgroud)

看来这就是我想在Lighttable/Leinengen里面得到的东西.

你能告诉我如何做出明确的选择/配置吗?

我试过谷歌,但找不到一些线索.

非常感谢!

jvm clojure leiningen lighttable

5
推荐指数
3
解决办法
2505
查看次数

导出时显示组织模式下代码块的名称?

使用组织模式,我想在导出代码块时导出黑色代码的名称。

例如,

#+NAME:code-segment-1
#+BEGIN_SRC javascript 
  var x = 5;
#+END_SRC

#+NAME:code-segment-2
#+BEGIN_SRC javascript 
  var y = 2;
#+END_SRC

#+NAME:assembly
#+BEGIN_SRC javascript :noweb yes :tangle "./assembly.js"
    <<code-segment-1>>
    <<code-segment-2>>
    return x + y;
#+END_SRC
Run Code Online (Sandbox Code Playgroud)

我希望导出看起来像:

code-segment-1:
    var x = 5;

code-segment-2:
    var y = 2;

assembly:
    var x = 5;
    var y = 2;
    return x + y;
Run Code Online (Sandbox Code Playgroud)

org-mode org-babel

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

Clojure:从不同大小的列表中更加惯用的元素配对?

我想创建一个对的列表cols,和patch.cols会有更多的元素.元素patch将在配对中重复.

例如,

(element-wise-patch '(1 3 5 7 9) '(2 4) '())
([1 2] [3 4] [5 2] [7 4] [9 2])
Run Code Online (Sandbox Code Playgroud)

这是我尝试实现语义.我希望学习更多惯用,更简单的解决方案.

(defn element-wise-patch [cols patch patched]
      (if (<= (count cols) (count patch))
        (concat patched (map vector cols patch))
        (let [[compatible remaining] (split-at (count patch) cols)]
          (element-wise-patch remaining patch (concat patched (map vector compatible patch)))))
Run Code Online (Sandbox Code Playgroud)

我觉得可能已经存在构造来进行这样的修补配对.此外,我的描述可能不足以关联类似的解决方案.

请给我一些指针,或者只是帮助我更清楚地定义我的问题.

在此先感谢您的帮助!

clojure

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

如何在 Python 的列表理解中保存重复计算?

在以下 Python 代码中:

keyboards = [3, 1]
drivers = [5, 2, 8]
upper_limit = 10
sums = [k + d for k in keyboards for d in drivers if (k + d) <= upper_limit]
Run Code Online (Sandbox Code Playgroud)

我想将 的结果存储k+d在列表理解中,以便它可以在列表理解中引用。在 Python3 中可能吗?

我知道我们可以做到以下几点:

sums = []
for k in keyboards:
    for d in drivers:
        s = k + d
        if s <= upper_limit:
            sums.append(s)
Run Code Online (Sandbox Code Playgroud)

但我希望避免 append 的副作用操作。

python list-comprehension python-3.x

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