首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python字符串条带不适用于尾随双引号

python字符串条带不适用于尾随双引号
EN

Stack Overflow用户
提问于 2019-04-30 14:16:03
回答 2查看 73关注 0票数 2

我试图使用python脚本自动完成一个任务,但遇到了这种奇怪的现象。我在“所以”中查找了相同的内容,但这略有不同,所以我在这里使用简化的示例。

下面有一个名为test1.txt的文件。

代码语言:javascript
复制
"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

代码语言:javascript
复制
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执行它时,我得到

代码语言:javascript
复制
"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"

我希望第一次打印链接与周围双引号(=链接),然后没有双引号(=链接1)。但是为什么我会看到link1的双引号呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-30 14:28:37

Python的str.strip([chars])将移除前导和尾随的chars,但一旦到达不在chars中的字符,就会停止。

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

去掉双引号和换行符:

代码语言:javascript
复制
link1 = link.strip('"\n')

此外,值得一提的是(如@glibdud注释中的注释),链接之所以以换行符结尾,是因为文件迭代器没有删除换行符,sub表达式也没有(因为.不包括换行符;要包含它,需要添加re.DOTALL regex标志)。

票数 2
EN

Stack Overflow用户

发布于 2019-04-30 14:22:51

当您想要打印没有引号时,只需去掉双引号和换行符,当要用双引号打印时,只需去掉新行即可。

代码语言:javascript
复制
import re

with open('file.txt') as f:
    for line in f:
        if line.strip():
            #print line
            link = re.sub(" ##.*", "", line)
            #Print with double quotes
            print link.strip('\n')
            #Print without double quotes by replacing double quotes with empty char
            print link.strip('"\n')

            #Print without double quotes by removing double quotes entirely
            #print link.strip("\"")

然后输出将是

代码语言:javascript
复制
"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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55922888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档