如何在selenium python中每两行之后添加逗号?

如何在selenium python中每两行之后添加逗号?,python,selenium,Python,Selenium,现在我在每一行后面都有逗号,但我需要在每两行后面插入逗号。这是我正在编写的文本。 产品规格: LEVERANDØRENS VARENUMMER 31358DC2,EAN NUMMER 4005176465017 这是我的密码: specification.text.replace("\n",",").strip() 我的代码在每一行的末尾给我逗号,但我需要在每两行后面加逗号。以下是我的结果: LEVERANDØRENS VARENUMMER,31358

现在我在每一行后面都有逗号,但我需要在每两行后面插入逗号。这是我正在编写的文本。 产品规格:

LEVERANDØRENS VARENUMMER 31358DC2,EAN NUMMER 4005176465017
这是我的密码:

specification.text.replace("\n",",").strip()
我的代码在每一行的末尾给我逗号,但我需要在每两行后面加逗号。以下是我的结果:

LEVERANDØRENS VARENUMMER,31358DC2,EAN NUMMER,4005176465017
我的预期结果如下:

LEVERANDØRENS VARENUMMER 31358DC2,EAN NUMMER 4005176465017

编辑:我只建议在您试图避免使用外部库时使用此方法。如果您可以访问像itertools这样的库(在Jason的回答中提到),您应该使用它们


这并不完全是小事。我组合的这个函数应该满足您的要求(增加了每N个字符执行一次的功能,而不仅仅是每两个字符执行一次)

def replaceVerynth(字符串:str,replace:str,replace_为:str,n:int):
out=“”
str_frags=string.split(replace)#将输入字符串拆分为子字符串
计数=1
对于str_frags中的frag[:len(str_frags)-1]:
out+=frag#将子字符串添加到输出字符串
如果计数%n==0:#替换第n个字符
out+=将_替换为
否则:#使用原始字符
输出+=替换
计数+=1
out+=str_frags[len(str_frags)-1]#添加最后一个字符串片段
返回
在您的特定情况下,您可以这样使用:

replaceVerynth(文本“\n”、“2”)。替换(“\n”、“2”)

您可以使用此行以逗号连接两行:

from itertools import izip_longest as izip # For Python 2
from itertools import zip_longest as izip # For Python 3

splitted = specification.text.split('\n')
text = ', '.join([' '.join([first, second]) if second else first for first, second in izip(splitted[::2], splitted[1::2])])
print(text)
输出:

'LEVERANDØRENS VARENUMMER 31358DC2, EAN NUMMER 4005176465017'
另外,如果您知道行数始终为偶数,那么您可以简化解决方案,只需使用
zip

text = ', '.join([' '.join([first, second]) for first, second in zip(splitted[::2], splitted[1::2])])

您可以编写一个生成器,成对地迭代行。用空格连接,然后用逗号连接

text = """LEVERANDØRENS VARENUMMER
31358DC2
EAN NUMMER
4005176465017"""

def grab_2(seq):
    iseq = iter(seq)
    while True:
        try:
            yield next(iseq), next(iseq)
        except StopIteration:
            break

out = ",".join(" ".join(vals) for vals in grab_2(text.split("\n")))
print(out)
您可以使用pythonshell来探索这个解决方案,并根据需要添加功能

>>> text = """LEVERANDØRENS VARENUMMER
... 31358DC2
... EAN NUMMER
... 4005176465017"""
>>> 
>>> def grab_2(seq):
...     iseq = iter(seq)
...     while True:
...         try:
...             yield next(iseq), next(iseq)
...         except StopIteration:
...             break
... 
>>> 
拆分该行将为您提供一个行列表,如果您愿意,可以进一步处理这些行

>>> lines = text.split("\n")
>>> lines
['LEVERANDØRENS VARENUMMER', '31358DC2', 'EAN NUMMER', '4005176465017']
一次抓取两行可以得到元组

>>> grabbed = list(grab_2(lines))
>>> for g in grabbed:
...     print(g)
... 
('LEVERANDØRENS VARENUMMER', '31358DC2')
('EAN NUMMER', '4005176465017')
这些块可以通过多种方式进行处理。除了与空格连接外,还可以使用格式说明符

>>> for g in grabbed:
...     print("{0};{1}\n".format(*g), end="")
... 
LEVERANDØRENS VARENUMMER;31358DC2
EAN NUMMER;4005176465017

汤卡斯·杰森。它起作用了,但izip在我当前的python版本中不起作用。将izip替换为zip后,它就可以工作了。@FarhanAhmed我使用了
izip
而不是
zip
,因为
zip
只能处理偶数个元素(2,4,6…),但不能处理奇数个元素(3,5,7…)。如果对你来说没问题,而且你知道行数总是偶数,那么就没问题了。否则,我建议您使用itertools中的zip函数(请注意,您应该只导入一个函数:
izip_longest
(在Python 2中)或
zip_longest
(在Python 3中)。这两个函数都不能同时使用),虽然您的代码对我不起作用,但不需要另一个库也可以解决。获取错误“AttributeError:'FirefoxWebElement'对象没有属性“split”,我将您的示例转换为运行的内容,这是stackoverflow的黄金标准。我只能猜测它在代码中的准确程度。与我的示例中的
text.split
不同,我想您应该使用
specification.text.split
——它在您发布的示例片段中起作用,因此应该在这里起作用。您好@tdelaney感谢您的澄清。我在使用specification.split,一次又一次地使用specification.text.split,正如你所说的,现在它开始工作了。Thankshi@tdelaney您能给我一些文档或链接让我更好地理解这个主题吗。假设每行后面都要有分号,每两行后面都要有逗号。如何做到这一点?您好@johnpaulr.pythonshell中没有出现任何错误,但输出为nothings,请参见图片link1图片link2