我正在尝试使用python脚本自动执行任务,但是遇到了这种奇怪的现象。我在SO中寻找相同的内容,但略有不同,因此我在这里使用简化示例进行询问。
我下面有一个名为test1.txt的文件。

"https://papers.nips.cc/paper/7286-efficient-algorithms-for-non-convex-isotonic-regression-through-submodular-optimization" ## Efficient Algorithms for Non-convex Isotonic Regression through Submodular Optimization
"https://papers.nips.cc/paper/7287-structure-aware-convolutional-neural-networks" ## Structure-Aware Convolutional Neural Networks
"https://papers.nips.cc/paper/7288-kalman-normalization-normalizing-internal-representations-across-network-layers" ## Kalman Normalization: Normalizing Internal Representations Across Network Layers
"https://papers.nips.cc/paper/7289-hogwild-gibbs-can-be-panaccurate" ## HOGWILD!-Gibbs can be PanAccurate


和python脚本quest.py

import re

with open('test1.txt') as f:
    for line in f:
        #print line
        link = re.sub(" ##.*","",line)
        print link
        link1 = link.strip('\"')
        print link1


当我用python quest.py执行它时,我得到

"https://papers.nips.cc/paper/7286-efficient-algorithms-for-non-convex-isotonic-regression-through-submodular-optimization"

https://papers.nips.cc/paper/7286-efficient-algorithms-for-non-convex-isotonic-regression-through-submodular-optimization"

"https://papers.nips.cc/paper/7287-structure-aware-convolutional-neural-networks"

https://papers.nips.cc/paper/7287-structure-aware-convolutional-neural-networks"

"https://papers.nips.cc/paper/7288-kalman-normalization-normalizing-internal-representations-across-network-layers"

https://papers.nips.cc/paper/7288-kalman-normalization-normalizing-internal-representations-across-network-layers"

"https://papers.nips.cc/paper/7289-hogwild-gibbs-can-be-panaccurate"

https://papers.nips.cc/paper/7289-hogwild-gibbs-can-be-panaccurate"


我想第一次使用周围的双引号(= link)打印链接,然后不使用双引号(= link1)打印链接。但是,为什么我会看到link1的结尾双引号?

最佳答案

Python的str.strip([chars])将删除开头和结尾的chars,但是一旦到达chars中没有的字符,它将停止。

看起来您的link以换行符结束,并且剥离在到达双引号之前就停止了。 (提示:print仅添加一个换行符,并且在输出中有两个换行符。)

删除双引号和换行符:

link1 = link.strip('"\n')


另外,值得一提的是(如@glibdud注释中所述),链接以换行符结尾的原因是因为文件迭代器不会剥离换行符,sub表达式也不会(因为.不包括换行符) ;要添加它,请添加re.DOTALL regex标志)。

关于python - python字符串条不适用于结尾的双引号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55922888/

10-11 00:48
查看更多