440,714 Members | 750 Online Need help? Post your question and get tips & solutions from a community of 440,714 IT Pros & Developers. It's quick & easy.

# str.find for multiple strings

 P: n/a x = str.find(temp, '120.50') I am looking for '120.50' '120.51' '122.78' etc. How can I do this with just one str.find... I can use re if I must, but I'd like to avoid it if possible. Jul 18 '05 #1
7 Replies

 P: n/a Bart Nessux wrote: x = str.find(temp, '120.50') I am looking for '120.50' '120.51' '122.78' etc. How can I do this with just one str.find... I can use re if I must, but I'd like to avoid it if possible. In addition to Fecundo's questions, here's another. What does "temp" contain? A single temperature string, or a temperature embedded in a bunch of other stuff, or a whole series of temperatures, or what? -Peter Jul 18 '05 #2

 P: n/a Peter Hansen wrote: Bart Nessux wrote:x = str.find(temp, '120.50')I am looking for '120.50' '120.51' '122.78' etc. How can I do this withjust one str.find... I can use re if I must, but I'd like to avoid it ifpossible. In addition to Fecundo's questions, here's another. What does "temp" contain? A single temperature string, or a temperature embedded in a bunch of other stuff, or a whole series of temperatures, or what? -Peter Here's what I'm doing def exclude(): import os os.chdir('/home/rbt/scripts') inputFile = file('ath_ips.txt', 'r') data = inputFile.read() inputFile.close() comment = '#' net0 = '128.173.120.' net1 = '128.173.122.' host0 = ['50','51','52','53','54','55'] host1 = ['17','25','49','50','55','58','70'] for h0 in host0: h0 = net0+h0 rep0 = comment+h0 sea0 = str.find(data, h0) if sea0 >=0: data = data.replace(h0, rep0) for h1 in host1: h1 = net1+h1 rep1 = comment+h1 sea1 = str.find(data, h1) if sea1 >=0: data = data.replace(h1, rep1) outputFile = file('ath_ips.txt', 'w') outputFile.write(data) outputFile.close() Jul 18 '05 #3

 P: n/a Bart Nessux wrote: Peter Hansen wrote: Bart Nessux wrote:x = str.find(temp, '120.50')I am looking for '120.50' '120.51' '122.78' etc. How can I do this withjust one str.find... I can use re if I must, but I'd like to avoid it ifpossible. In addition to Fecundo's questions, here's another. What does "temp" contain? A single temperature string, or a temperature embedded in a bunch of other stuff, or a whole series of temperatures, or what? -Peter Here's what I'm doing inputFile = file('ath_ips.txt', 'r') data = inputFile.read() [snip] Well, since that shows nothing whatever about the content of the "data" string (i.e. what is in that ath_ips.txt file), it doesn't really help to answer the questions I had. -Peter Jul 18 '05 #4

 P: n/a On Wed, 11 Feb 2004 14:48:22 -0500 in comp.lang.python, Bart Nessux wrote: Peter Hansen wrote: Bart Nessux wrote:x = str.find(temp, '120.50')I am looking for '120.50' '120.51' '122.78' etc. How can I do this withjust one str.find... I can use re if I must, but I'd like to avoid it ifpossible. In addition to Fecundo's questions, here's another. What does "temp" contain? A single temperature string, or a temperature embedded in a bunch of other stuff, or a whole series of temperatures, or what? -PeterHere's what I'm doingdef exclude(): import os os.chdir('/home/rbt/scripts') inputFile = file('ath_ips.txt', 'r') data = inputFile.read() inputFile.close() comment = '#' net0 = '128.173.120.' net1 = '128.173.122.' host0 = ['50','51','52','53','54','55'] host1 = ['17','25','49','50','55','58','70'] for h0 in host0: h0 = net0+h0 rep0 = comment+h0 sea0 = str.find(data, h0) if sea0 >=0: data = data.replace(h0, rep0) for h1 in host1: h1 = net1+h1 rep1 = comment+h1 sea1 = str.find(data, h1) if sea1 >=0: data = data.replace(h1, rep1) outputFile = file('ath_ips.txt', 'w') outputFile.write(data) outputFile.close() There's no need to do an explicit find() before replace(). Your 'for' loops can be written as for h0 in host0: data = data.replace(net0+h0, comment+net0+h0) for h1 in host1: data = data.replace(net1+h1, comment+net1+h1) Or reduce it to one 'for' loop with list_comprehensions for host in [net0+h0 for h0 in host0] + [net1+h1 for h1 in host1]: data = data.replace(host, comment+host) Dave Jul 18 '05 #5

 P: n/a Dave K wrote: On Wed, 11 Feb 2004 14:48:22 -0500 in comp.lang.python, Bart Nessux wrote:Peter Hansen wrote:Bart Nessux wrote: x = str.find(temp, '120.50')I am looking for '120.50' '120.51' '122.78' etc. How can I do this withjust one str.find... I can use re if I must, but I'd like to avoid it ifpossible. In addition to Fecundo's questions, here's another. What does "temp"contain? A single temperature string, or a temperature embedded ina bunch of other stuff, or a whole series of temperatures, or what?-PeterHere's what I'm doingdef exclude(): import os os.chdir('/home/rbt/scripts') inputFile = file('ath_ips.txt', 'r') data = inputFile.read() inputFile.close() comment = '#' net0 = '128.173.120.' net1 = '128.173.122.' host0 = ['50','51','52','53','54','55'] host1 = ['17','25','49','50','55','58','70'] for h0 in host0: h0 = net0+h0 rep0 = comment+h0 sea0 = str.find(data, h0) if sea0 >=0: data = data.replace(h0, rep0) for h1 in host1: h1 = net1+h1 rep1 = comment+h1 sea1 = str.find(data, h1) if sea1 >=0: data = data.replace(h1, rep1) outputFile = file('ath_ips.txt', 'w') outputFile.write(data) outputFile.close() There's no need to do an explicit find() before replace(). Your 'for' loops can be written as for h0 in host0: data = data.replace(net0+h0, comment+net0+h0) for h1 in host1: data = data.replace(net1+h1, comment+net1+h1) Or reduce it to one 'for' loop with list_comprehensions for host in [net0+h0 for h0 in host0] + [net1+h1 for h1 in host1]: data = data.replace(host, comment+host) Dave Thanks Dave. That's very helpful. Jul 18 '05 #6

 P: n/a Hi, looking at your code is obvious that what you want to do is to look for servers on the "ath_ips.txt" file and then comment the line where they appear. I think this search and replace function can be done with regular expressions (see the re module). The servers belong to the same network, and only the two left digits are different. Regards, Josef "Bart Nessux" wrote in message news:c0**********@solaris.cc.vt.edu... Peter Hansen wrote: Bart Nessux wrote:x = str.find(temp, '120.50')I am looking for '120.50' '120.51' '122.78' etc. How can I do this withjust one str.find... I can use re if I must, but I'd like to avoid it ifpossible. In addition to Fecundo's questions, here's another. What does "temp" contain? A single temperature string, or a temperature embedded in a bunch of other stuff, or a whole series of temperatures, or what? -Peter Here's what I'm doing def exclude(): import os os.chdir('/home/rbt/scripts') inputFile = file('ath_ips.txt', 'r') data = inputFile.read() inputFile.close() comment = '#' net0 = '128.173.120.' net1 = '128.173.122.' host0 = ['50','51','52','53','54','55'] host1 = ['17','25','49','50','55','58','70'] for h0 in host0: h0 = net0+h0 rep0 = comment+h0 sea0 = str.find(data, h0) if sea0 >=0: data = data.replace(h0, rep0) for h1 in host1: h1 = net1+h1 rep1 = comment+h1 sea1 = str.find(data, h1) if sea1 >=0: data = data.replace(h1, rep1) outputFile = file('ath_ips.txt', 'w') outputFile.write(data) outputFile.close() Jul 18 '05 #7

 P: n/a Peter Hansen wrote: Bart Nessux wrote: Peter Hansen wrote: Bart Nessux wrote:>x = str.find(temp, '120.50')>>I am looking for '120.50' '120.51' '122.78' etc. How can I do this with>just one str.find... I can use re if I must, but I'd like to avoid it if>possible. In addition to Fecundo's questions, here's another. What does "temp" contain? A single temperature string, or a temperature embedded in a bunch of other stuff, or a whole series of temperatures, or what? Ah, trust me to take an industrial-control point of view and not a network software point of view. You meant "temp" to be a temporary variable, not a temperature, and the 120.50, 120.51 stuff are partial IP addresses, not temperatures... how curious of me to confuse them. :-) -Peter Jul 18 '05 #8

### This discussion thread is closed

Replies have been disabled for this discussion. 