我试图使用python脚本自动完成一个任务,但遇到了这种奇怪的现象。我在“所以”中查找了相同的内容,但这略有不同,所以我在这里使用简化的示例。
下面有一个名为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"我希望第一次打印链接与周围双引号(=链接),然后没有双引号(=链接1)。但是为什么我会看到link1的双引号呢?
发布于 2019-04-30 14:28:37
Python的str.strip([chars])将移除前导和尾随的chars,但一旦到达不在chars中的字符,就会停止。
看起来您的link以换行符结束,甚至在到达双引号之前就停止了剥离。(提示:print只添加一个换行符,在输出中有两个换行符。)
去掉双引号和换行符:
link1 = link.strip('"\n')此外,值得一提的是(如@glibdud注释中的注释),链接之所以以换行符结尾,是因为文件迭代器没有删除换行符,sub表达式也没有(因为.不包括换行符;要包含它,需要添加re.DOTALL regex标志)。
发布于 2019-04-30 14:22:51
当您想要打印没有引号时,只需去掉双引号和换行符,当要用双引号打印时,只需去掉新行即可。
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("\"")然后输出将是
"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-panaccuratehttps://stackoverflow.com/questions/55922888
复制相似问题