【问题标题】:How do I do a character compare on text box data in python 3如何在 python 3 中对文本框数据进行字符比较
【发布时间】:2016-12-20 00:18:36
【问题描述】:

我已经翻遍了,找不到我要找的东西。我最近开始学习 python,但现在卡在我的一个项目上。

我有一个名为self.script_txt1 的文本框,我正在尝试编写一个函数,将该文本框中的每一行相互比较以找到奇数字符。

我知道我需要使用 for 循环来执行此操作,但我不知道如何创建循环,以便它遍历每行的每个字符,然后移动到下一行。

比如self.script_txt1里面的数据

1111111111111111111111111111111111111111111

1111111111111111111111111111111111111111111

111111111111111111111111111111111a111111111

1111111111111111111111111111111111111111111

11111111a1111111111111111111111111111111111 

1111111111111111111111111111111111111111111

1111111111111111111111111111111111111111111 

1111111111111111111111111111111111111111111 

1111911111111111111111a11111111111111111111 

111111111111111111Z111111111111111111111111 

1111*111*111111111*111*1111111111*111111111 # <-- new inserted line

我想找出所有不同的字符,并在底部插入一个带有*% 的新行,以标记找到不同字符的位置。

【问题讨论】:

  • 我没有看到你的代码。而且我在代码中看不到tkinter
  • 您似乎希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的程序员编写代码,但他们通常只会在发布者已经尝试自己解决问题时提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出和您实际获得的输出(输出、回溯等)。您提供的详细信息越多,您可能收到的答案就越多。检查FAQHow to Ask
  • 从文本框中获取所有文本,将其拆分为行 (split('\n')) 并使用 for 循环逐行获取,第二个 for 循环从线。并将 char 与您的列表进行比较。所以所有问题都与 tkinter 无关。

标签: python python-3.x loops for-loop tkinter


【解决方案1】:

在代码中读取 cmets

text = '''1111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111
111111111111111111111111111111111a111111111
1111111111111111111111111111111111111111111
11111111a1111111111111111111111111111111111
1111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111
1111911111111111111111a11111111111111111111
111111111111111111Z111111111111111111111111'''

# split text into lines
lines = text.split('\n')

# find length of the longest line
length = max(len(line) for line in lines)
print('length:', length)

# create new line with `1`s (or rather create list with `1`s)
result = ['1']*length
print(' start:', ''.join(result))

# search for chars in lines

# get line-by-line
for line in lines:
    # get char-by-char in line (and enumerate it)
    for idx, char in enumerate(line):
        # check char
        if char != '1': # if char not in ('1', 'x', 'y'):
            # put `*` in correct place in new line
            result[idx] = '*'
            #print('found:', idx, char)

# display new line
new_line = ''.join(result)
print('result:', new_line)

结果:

length: 43
 start: 1111111111111111111111111111111111111111111
result: 1111*111*111111111*111*1111111111*111111111

现在您只需从文本框中获取文本并在末尾添加新行。

【讨论】:

  • 抱歉,这是我第一次使用 stackoverflow,目前还不确定我是否必须发布我的代码。所以就在这里。
  • 不允许我发帖,太长了。将查看您提供的示例。谢谢,感谢您的意见。
猜你喜欢
  • 1970-01-01
  • 2021-05-22
  • 2015-07-14
  • 1970-01-01
  • 1970-01-01
  • 2013-11-26
  • 2012-06-14
  • 1970-01-01
  • 2015-01-26
相关资源
最近更新 更多